WPF 数据触发器根据枚举数据触发

引用的静态属性可用于在 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>

猜你喜欢

转载自blog.csdn.net/BYH371256/article/details/120418097
今日推荐