Enum上的DataTrigger作为WPF样式的触发器值

Fir*_*oso 14 .net c# wpf enums binding

所以这就是我想要做的事情,我只想从代码开始,它很可能会有意义.

<bl:InnerGlowBorder x:Name="glow"
                    InnerGlowColor="Teal">
  <bl:InnerGlowBorder.Style>
    <Style TargetType="bl:InnerGlowBorder">
      <Style.Triggers>
        <DataTrigger Binding="{Binding ViewUnitStatus}"
                     Value="UnitStatusModel.Pass">
          <Setter Property="InnerGlowColor"
                  Value="Green" />
        </DataTrigger>
        <DataTrigger Binding="{Binding ViewUnitStatus}"
                     Value="UnitStatusModel.Fail">
          <Setter Property="InnerGlowColor"
                  Value="Red" />
        </DataTrigger>
        <DataTrigger Binding="{Binding ViewUnitStatus}"
                     Value="UnitStatusModel.Indeterminate">
          <Setter Property="InnerGlowColor"
                  Value="Yellow" />
        </DataTrigger>
        <DataTrigger Binding="{Binding ViewUnitStatus}"
                     Value="UnitStatusModel.Warning">
          <Setter Property="InnerGlowColor"
                  Value="Orange" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </bl:InnerGlowBorder.Style>
</bl:InnerGlowBorder>
Run Code Online (Sandbox Code Playgroud)

和枚举定义:

namespace SEL.MfgTestDev.ESS.ViewModel
{
    public enum UnitStatusModel
    {
        Indeterminate,
        Pass,
        Fail,
        Warning,
    }
}
Run Code Online (Sandbox Code Playgroud)

我错过了一件让这件作品?我在enum上发现了一些依赖于对象数据源的WPF文章,我真的不喜欢这个解决方案,这里有什么更简单的东西吗?

Fir*_*oso 8

我找到了解决方案而且非常愚蠢.

样式被设计为控件的一种可视化模板,但它们被设计为可视化实现的基础,而不是全部/最终所有可视化模型.

结果,我遇到了一个情况,我的模板决定了InnerGlowColor应该是什么.但是,通过将属性InnerGlowColor ="Teal"应用于元素,我创建了一个有效的覆盖,忽略了我的视觉风格.解决方案是简单地删除元素声明中的dependancy属性.