XamlLight 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供用于创建 XAML 灯的基类,该类使用 CompositionLight 将照明效果应用于 XAML 元素和画笔。
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class XamlLight : DependencyObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class XamlLight : DependencyObject
Public Class XamlLight
Inherits DependencyObject
- 继承
- 属性
示例
请参阅 照明中的代码示例。
注解
可以使用 XamlLight 创建自定义灯。
例如,它可用于创建一个光,将合成 SpotLight 应用于目标元素以点亮它们。
XamlLight 提供了方法以用于面向 UIElement 或 XAML 画笔、将光应用于 UIElement 树以及帮助管理 CompositionLight 资源的生存期(根据它们当前是否已使用)。
自定义 XamlLight 可以与派生自 XamlCompositionBrushBase 的自定义画笔结合使用,这些画笔使用 SceneLightingEffect 在 XamlLight 点燃时控制元素的反射属性。
面向对象
如果使用 XamlLight 面向某个画笔,则光会照亮使用该画笔的任何 UIElement 的位置。
如果使用 XamlLight 面向某个 UIElement,则光会照亮整个 UIElement 及其子 UIElement。
可以通过在 XamlLight 实例上调用方法添加和删除目标。 XamlLights 还可以定义 自定义附加属性 ,以在标记中添加和删除目标。
管理资源
创建 XamlLight 时,通常最好延迟创建 CompositionLight 和任何相关资源,直到使用灯。 当 XamlLight 首次用于在屏幕上以元素或画笔为目标时,将调用 OnConnected 方法,因此可以替代 OnConnected ,以便仅在需要时才安全地创建资源。
当组合资源不再使用时,释放这些资源也是一种很好的做法。 当 XamlLight 实例不再在屏幕上的任何位置使用时,将调用 OnDisconnected 方法,因此你可以重写 OnDisconnected 以安全地释放资源。 如果在断开连接后再次使用 XamlLight,则将再次调用 OnConnected 。
警告
在 Windows 10 创意者更新 (SDK 15063) ,调用 Dispose 后无法访问 CompositionLight,因此调用 Dispose 后将其设置为 null 会导致错误。 若要解决此问题,可以将 CompositionLight 保存到临时变量,并在将 CompositionLight 设置为 null 后在该变量上调用 Dispose。
var temp = CompositionLight; CompositionLight = null; temp.Dispose();
此问题在 SDK 的更高版本中已修复。 有关如何面向不同 SDK 版本的信息,请参阅 版本自适应应用 。
构造函数
XamlLight() |
初始化 XamlLight 类的新实例。 |
属性
CompositionLight |
获取或设置用于应用照明效果的 CompositionLight 实例。 |
Dispatcher |
始终在Windows 应用 SDK应用中返回 |
DispatcherQueue |
|