ThemeShadow 类

定义

ThemeShadow 是一种预配置的阴影效果,可应用于任何 XAML 元素,以基于 x、y、z 坐标适当绘制阴影。 ThemeShadow 还会根据其他环境规范自动进行调整:

  • 根据光线、用户主题、应用环境和外壳方面的变化进行调整。
  • 根据元素的提升自动隐藏元素。
  • 在元素移动和更改高度时使其保持同步。
  • 使阴影在整个应用程序中和不同的应用程序之间保持一致。
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 524288)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class ThemeShadow : Shadow
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 524288)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class ThemeShadow : Shadow
Public Class ThemeShadow
Inherits Shadow
继承
Object IInspectable DependencyObject Shadow ThemeShadow
属性

Windows 要求

设备系列
Windows 10, version 1903 (在 10.0.18362.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v8.0 中引入)

示例

提示

有关详细信息、设计指南和代码示例,请参阅 Z 深度和阴影

许多常见控件使用 ThemeShadow 自动投射阴影。

如果已安装 WinUI 2 库应用并满足上述最低Windows 10版本要求,请单击此处打开该应用,并在常见控件上查看 ThemeShadow 的运行情况。

注解

提示

有关详细信息、设计指南和代码示例,请参阅 Z 深度和阴影

ThemeShadow 可以应用于任何 XAML 元素,以基于概念转换器 UIElement 和一个或多个接收器 UIElement 之间的相对 x、y 和 z 坐标绘制阴影,这些接收器 UIElement 将投射到这些对象上。

ThemeShadow 仅支持矩形阴影。 对于自定义阴影效果,可以使用 DropShadow

弹出窗口中的 ThemeShadows

在应用到弹出窗口中的任何 XAML 元素时,ThemeShadow 会自动投射阴影。 它会在其后面的应用背景内容上以及在其下面的任何其他已打开弹出窗口上投射阴影。

若要将 ThemeShadow 与 Popups 配合使用,请使用 UIElement.Shadow 属性将 ThemeShadow 应用于 XAML 元素。 然后,从它后面的其他元素提升元素,例如通过使用 UIElement.Translation 属性的 z 组件。 对于大多数弹出窗口 UI,相对于应用背景内容的建议默认提升值为 32 个有效像素。

其他元素中的 ThemeShadow

若要从不在 Popup 中的 XAML 元素投射阴影,必须显式指定可在 ThemeShadow.Receivers 集合中接收阴影的其他元素。 接收器不能是视觉树中投射器的上级。

ThemeShadow 的性能最佳做法

  1. 请将自定义接收器元素的数量限制为所需的最小值。

  2. 如果多个接收方元素处于相同的高程,则尝试通过面向单个父元素来合并它们。

  3. 如果多个元素将相同类型的阴影投射到相同的接收器元素,请将阴影添加为共享资源并重用它。

构造函数

ThemeShadow()

初始化 ThemeShadow 类的新实例。

属性

Dispatcher

获取与此 对象关联的 CoreDispatcherCoreDispatcher 表示可以访问 UI 线程上的 DependencyObject 的工具,即使代码是由非 UI 线程启动的。

(继承自 DependencyObject)
Receivers

获取此 ThemeShadow 强制转换的 UI 元素的集合。

方法

ClearValue(DependencyProperty)

清除依赖属性的本地值。

(继承自 DependencyObject)
GetAnimationBaseValue(DependencyProperty)

返回为依赖属性建立的任何基值,该基值适用于动画未处于活动状态的情况。

(继承自 DependencyObject)
GetValue(DependencyProperty)

DependencyObject 返回依赖属性的当前有效值。

(继承自 DependencyObject)
ReadLocalValue(DependencyProperty)

如果设置了本地值,则返回依赖属性的本地值。

(继承自 DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

注册一个通知函数,用于侦听此 DependencyObject 实例上特定 DependencyProperty 的更改。

(继承自 DependencyObject)
SetValue(DependencyProperty, Object)

设置 DependencyObject 上依赖属性的本地值。

(继承自 DependencyObject)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

取消以前通过调用 RegisterPropertyChangedCallback 注册的更改通知。

(继承自 DependencyObject)

适用于

另请参阅