Setter 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将值应用于 Style 或 VisualState 中的属性。
public ref class Setter sealed : SetterBase
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.Activatable(Microsoft.UI.Xaml.ISetterFactory, 65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [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 Setter final : SetterBase
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.Activatable(typeof(Microsoft.UI.Xaml.ISetterFactory), 65536, "Microsoft.UI.Xaml.WinUIContract")]
[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 sealed class Setter : SetterBase
Public NotInheritable Class Setter
Inherits SetterBase
<Setter .../>
- 继承
- 属性
示例
此示例演示如何对 TextBlock 元素使用Setter
样式中的语句。
<StackPanel>
<StackPanel.Resources>
<!-- Create a Style for a TextBlock to specify that the
Foreground equals Navy, FontSize equals 14, and
VerticalAlignment equals Bottom. -->
<Style TargetType="TextBlock" x:Key="TextBlockStyle">
<Setter Property="Foreground" Value="Navy"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="VerticalAlignment" Value="Bottom"/>
</Style>
</StackPanel.Resources>
<!-- Apply the TextBlockStyle to 2 different TextBlocks. -->
<TextBlock Style="{StaticResource TextBlockStyle}" Text=”Hello”/>
<TextBlock Style="{StaticResource TextBlockStyle}" Text=”World”/>
</StackPanel>
此示例演示如何在 VisualState.Setters 属性中使用多个Setter
语句,在应用 VisualState 时对各种元素 (应用离散属性值更改,而无需) 动画。
<Page>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="NarrowState">
<VisualState.Setters>
<Setter Target="myPanel.Orientation" Value="Vertical"/>
<Setter Target="myPanel.Width" Value="380"/>
<Setter Target="myTextBlock.MaxLines" Value="3"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<StackPanel x:Name="myPanel" Orientation="Horizontal">
<TextBlock x:Name="myTextBlock" MaxLines="5" Style="{ThemeResource BodyTextBlockStyle}"/>
</StackPanel>
</Grid>
</Page>
还可以通过在 AttachedPropertyProvider 中指定附加的属性名称,将 setter 应用于附加的属性值。PropertyName 窗体。 例如,若要对附加属性 Canvas.Left 使用 Setter,请使用此 XAML。
<Setter Property="Canvas.Left" Value="100"/>
若要使用 Target
更新附加属性的值,请将附加属性路径放在括号内。 此示例演示如何更新 RelativePanel.AlignRightWithPanel
名为“TitleTextBlock”的元素上的值。
<RelativePanel>
<TextBlock x:Name="TitleTextBlock" Text="Title"/>
</RelativePanel>
...
<Setter Target="TitleTextBlock.(RelativePanel.AlignRightWithPanel)" Value="True"/>
注解
使用 Setter
语句在 Style 或 VisualState 中设置属性值。
Setter.Target 属性可以在 Style 或 VisualState 中使用,但以不同的方式使用。 在 中使用 Style
时,可以直接指定需要修改的属性。 在 中使用 VisualState
时, Target
必须为 属性提供 TargetPropertyPath (点语法,并具有) 显式指定的目标元素和属性。
Setter.Property 属性只能在 Style 中使用,不能在 VisualState 中使用。 从 Windows 10 开始,可以在任何位置(而不是 Setter.Property
)使用 Setter.Target。
必须在 上Setter
同时指定 Value 和 Target 或 Property。 否则,将引发异常 (分析异常或运行时错误,具体取决于是使用 XAML 创建 Setter 还是在代码) 中修改。
如果使用代码访问Setter
实例,则如果父 Styletrue
上的 IsSealed 属性Setter
的值为 ,则不能更改实例的任何属性的值。 单个 上的 IsSealed 属性也报告了这一点 Setter
。 当运行时将样式应用于 UI 元素并在 UI 中显示这些属性时,系统会将这些属性 true
设置为 。 尝试更改密封 Setter
会引发运行时错误。
迁移说明
- Windows Presentation Foundation (WPF) 和 Microsoft Silverlight 支持使用 Binding 表达式在样式中为
Setter
提供值的功能。 Windows 运行时不支持Binding
Setter.Value 的用法,Binding
(不会评估 并且Setter
没有效果,你不会收到错误,但你不会) 得到所需的结果。 从 WPF 或 Microsoft Silverlight XAML 转换 XAML 样式时,请将任何Binding
表达式用法替换为设置值的字符串或对象,或将值重构为共享 {StaticResource} 标记扩展 值,而不是Binding
获取的值。
构造函数
Setter() | |
Setter(DependencyProperty, Object) |
属性
Dispatcher |
始终在Windows 应用 SDK应用中返回 |
DispatcherQueue |
|
IsSealed |
获取一个值,该值指示此对象是否为不可变状态。 (继承自 SetterBase) |
Property |
获取或设置要应用 Value 的属性。 |
Target |
获取或设置目标元素上要应用 Value 的属性的路径。 |
Value |
获取或设置要应用于 Setter 指定的属性的值。 |
方法
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) |