引用的静态属性可用于在 XAML 中提供属性的值。
x:static指向的对象通常是后台代码里的某个静态类。用来在Xaml中引用类的静态字段或静态属性
XAML 属性用法
<object property="{x:Static prefix:typeName.staticMemberName}" .../>
XAML
prefix 可选。 指映射的非默认 XAML 命名空间的前缀。 prefix在用法中显式显示,因为很少引用来自默认 XAML 命名空间的静态属性。
typeName 必需。 定义所需静态成员的类型的名称。
staticMemberName 必需。 所需静态值成员(常量、静态属性、字段或枚举值)的名称。
引用的代码实体必须是以下类型之一:常量、静态属性、字段、枚举值
如果编译了 XAML,或者 XAML 加载时间分析异常,则指定任何其他代码实体(如非静态属性)会导致编译时错误。
您可以x:Static引用当前 XAML 文档的默认 XAML 命名空间中未包含的静态字段或属性;但是,这需要前缀映射。 XAML 命名空间几乎总是在 XAML 文档的根元素上定义。
XAML 中使用枚举,数据触发器,触发界面等变化;
定义枚举类型:
namespace BindingTest.Model
{
public enum SexType//枚举类型
{
Man,
Woman,
Unknown
}
}
后台属性绑定:
private SexType m_SexType;
public SexType SexType
{
get { return m_SexType; }
set
{
m_SexType = value;
OnPropertyChanged("SexType");//通知改变
}
}
界面示例:
xmlns:model="clr-namespace:BindingTest.Model"//作用域
<TextBlock x:Name="SexType" Margin="0 5 0 0" FontSize="13" HorizontalAlignment="Center" VerticalAlignment="Bottom" Foreground="White">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding SexType}" Value="{x:Static model:SexType.Man}">
<Setter Property="Text" Value="男"/>
</DataTrigger>
<DataTrigger Binding="{Binding SexType}" Value="{x:Static model:SexType.Woman}">
<Setter Property="Text" Value="女"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>