WPF使用(密封)数据触发器后,将无法对其进行修改

时间:2018-11-21 08:42:01

标签: c# wpf visual-studio-2017

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

    <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和Error状态是XAML中引用的枚举值:

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

状态绑定引用了视图模型,该视图模型是支持IPropertyChanged的“常规”属性(来自mvvm light lib)

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

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

  

使用(密封)数据触发器后,将无法对其进行修改

更新:为清楚起见,解决方案可以很好地编译,并且运行时一切正常。

1 个答案:

答案 0 :(得分:1)

您可以直接从背后的代码中引用您的枚举。像这样:

{x:Static namespacename:EnumName.EnumValue}

参考: How can I use enum types in XAML?