繁体   English   中英

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

[英]DataTrigger on Enums as the trigger value on a WPF Style

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

<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>

和枚举定义:

namespace SEL.MfgTestDev.ESS.ViewModel
{
    public enum UnitStatusModel
    {
        Indeterminate,
        Pass,
        Fail,
        Warning,
    }
}

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM