首页 > 解决方案 > WPF 数据触发器在使用(密封)后,无法修改

问题描述

我不知道出了什么问题,以及我应该如何解决错误。奇怪的是,数据触发器工作正常。

    <Style TargetType="Border">
        <Setter Property="Background" Value="{StaticResource HeaderBackgroundBrush}"/>
        <Style.Triggers>
            <DataTrigger Binding="{Binding State}" Value="{StaticResource ErrorState}">
                <Setter Property="Background" Value="OrangeRed"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding State}" Value="{StaticResource ProductionState}">
                <Setter Property="Background" Value="Green"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>

ProductionState 和错误状态是 XAML 中引用的枚举值:

    <machineControl:MachineControllerState x:Key="ErrorState">Error</machineControl:MachineControllerState>
    <machineControl:MachineControllerState x:Key="ProductionState">Production</machineControl:MachineControllerState>

对视图模型的状态绑定引用是支持 IPropertyChanged 的​​“普通”属性(来自 mvvm 灯库)

    public MachineControllerState State
    {
        get => state;
        set { Set(() => State, ref state, value); }
    }

visual studio 在错误列表中显示错误:

数据触发器在使用(密封)后,无法修改

更新:需要明确的是,解决方案编译得很好,运行时一切都按预期工作。

标签: c#wpfvisual-studio-2017

解决方案


您可以直接从代码隐藏中引用您的枚举。就像是:

{x:Static namespacename:EnumName.EnumValue}

参考: 如何在 XAML 中使用枚举类型?


推荐阅读