Setter 类

定义

将值应用于或 Style a VisualState. 中的属性。

public ref class Setter sealed : SetterBase
/// [Windows.Foundation.Metadata.Activatable(Windows.UI.Xaml.ISetterFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 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.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(Windows.UI.Xaml.ISetterFactory, 65536, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class Setter final : SetterBase
[Windows.Foundation.Metadata.Activatable(typeof(Windows.UI.Xaml.ISetterFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class Setter : SetterBase
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.UI.Xaml.ISetterFactory), 65536, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class Setter : SetterBase
Public NotInheritable Class Setter
Inherits SetterBase
<Setter .../>
继承
Object IInspectable DependencyObject SetterBase Setter
属性

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

示例

此示例演示如何在元素样式 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 使用 aSetter,请使用此 XAML。

<Setter Property="Canvas.Left" Value="100"/>

若要使用 Target更新附加属性的值,请将附加的属性路径置于括号内。 此示例演示如何使用名称“TitleTextBlock”更新 RelativePanel.AlignRightWithPanel 元素上的值。

<RelativePanel>
    <TextBlock x:Name="TitleTextBlock" Text="Title"/>
</RelativePanel>

...

<Setter Target="TitleTextBlock.(RelativePanel.AlignRightWithPanel)" Value="True"/>

注解

Use Setter statements to set a property value within a Style or a VisualState.

Setter.Target属性可以在一种或一种StyleVisualState,但以不同的方式使用。 在 a Style中使用时,可以直接指定需要修改的属性。 在使用时 VisualState,必须向 Target 属性提供一个 TargetPropertyPath (点语法,并显式指定目标元素和属性) 。

Setter.Property 属性只能在 a Style 而不是在 a . VisualState中使用。 从 Windows 10 开始,你可以在任何地方使用 Setter.Target ,而不是 Setter.Property使用。

必须在 Setter 上同时指定 ValueTarget 指定或 Property。 否则,会在分析异常或运行时错误 (引发异常,具体取决于 Setter 是在 XAML 中创建还是在代码) 修改。

如果使用代码访问 Setter 实例,则如果父Style实例上的属性值 为 true,则不能更改 Setter 实例的任何属性的值IsSealed。 该属性还由 IsSealed 单个 Setter 上的属性报告。 当运行时将样式应用于 UI 元素并在 UI 中显示它们时,系统将这些属性设置为 true 。 尝试更改密封的 Setter 会引发运行时错误。

迁移说明

  • Windows Presentation Foundation (WPF) 和 Microsoft Silverlight 支持使用Binding表达式来提供 Value Setter 的Style表达式。 Windows 运行时不支持Binding使用Setter.Value (Binding不会评估,Setter 不起作用,不会收到错误,但不会获得所需的结果) 。 从Windows Presentation Foundation (WPF) 或 Microsoft Silverlight XAML 转换 XAML 样式时,请将任何Binding表达式用法替换为设置值的字符串或对象,或将值重构为共享的 {StaticResource} 标记扩展值,而不是Binding获取的值。

构造函数

Setter()

初始化类的新实例 Setter ,不带初始 Property 值或 Value

Setter(DependencyProperty, Object)

使用初始Property值和Value信息初始化类的新实例Setter

属性

Dispatcher

CoreDispatcher获取与此对象关联的对象。 表示 CoreDispatcher 可以访问 DependencyObject UI 线程上的设施,即使代码由非 UI 线程启动也是如此。

适用于 UWP 的等效 WinUI 2 API:Windows 应用 SDK中 WinUI 的 Microsoft.UI.Xaml.DependencyObject.Dispatcher (,请参阅Windows 应用 SDK命名空间) 。

(继承自 DependencyObject)
IsSealed

获取一个值,该值指示此对象是否为不可变状态。

等效的 WinUI 2 API for UWPMicrosoft.UI.Xaml.SetterBase.IsSealed (for WinUI in Windows 应用 SDK,请参阅 Windows 应用 SDK命名空间) 。

(继承自 SetterBase)
Property

获取或设置要应用到 Value 的属性。

Target

获取或设置要应用于 Value 的目标元素的属性的路径。

Value

获取或设置要应用于由该 Setter属性指定的属性的值。

方法

ClearValue(DependencyProperty)

清除依赖属性的本地值。

适用于 UWP 的等效 WinUI 2 API:Windows 应用 SDK中 WinUI 的 Microsoft.UI.Xaml.DependencyObject.ClearValue (,请参阅Windows 应用 SDK命名空间) 。

(继承自 DependencyObject)
GetAnimationBaseValue(DependencyProperty)

返回为依赖属性建立的任何基值,如果动画不处于活动状态,将适用该基值。

适用于 UWP 的等效 WinUI 2 API:Windows 应用 SDK WinUI 的 Microsoft.UI.Xaml.DependencyObject.GetAnimationBaseValue (,请参阅 Windows 应用 SDK命名空间) 。

(继承自 DependencyObject)
GetValue(DependencyProperty)

Returns the current effective value of a dependency property from a DependencyObject.

适用于 UWP 的等效 WinUI 2 API:Windows 应用 SDK中 WinUI Microsoft.UI.Xaml.DependencyObject.GetValue (,请参阅 Windows 应用 SDK命名空间) 。

(继承自 DependencyObject)
ReadLocalValue(DependencyProperty)

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

适用于 UWP 的等效 WinUI 2 API:Windows 应用 SDK中 WinUI 的 Microsoft.UI.Xaml.DependencyObject.ReadLocalValue (,请参阅Windows 应用 SDK命名空间) 。

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

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

适用于 UWP 的等效 WinUI 2 API:Windows 应用 SDK中 WinUI 的 Microsoft.UI.Xaml.DependencyObject.RegisterPropertyChangedCallback (,请参阅Windows 应用 SDK命名空间) 。

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

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

适用于 UWP 的等效 WinUI 2 API:Windows 应用 SDK中 WinUI 的 Microsoft.UI.Xaml.DependencyObject.SetValue (,请参阅Windows 应用 SDK命名空间) 。

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

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

适用于 UWP 的等效 WinUI 2 API:Windows 应用 SDK中 WinUI 的 Microsoft.UI.Xaml.DependencyObject.UnregisterPropertyChangedCallback (,请参阅Windows 应用 SDK命名空间) 。

(继承自 DependencyObject)

适用于

另请参阅