DataTrigger on Enums как значение триггера в стиле WPF
Итак, вот что я пытаюсь сделать в двух словах, я просто начну с кода, и это, скорее всего, будет иметь смысл.
<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,
}
}
Мне не хватает части, чтобы сделать эту работу? Я нашел некоторые статьи WPF по перечислениям, которые полагаются на источники данных объектов, и мне не очень нравится это решение, нет ли здесь чего-то более простого, что я могу сделать здесь?
Ответы
Ответ 1
Я нашел решение, и это было довольно глупо.
Стили разработаны как своего рода визуальный шаблон для элемента управления, но они разработаны как основа для визуальной реализации, а не как визуальная модель be-all/end-all.
В результате у меня была ситуация, в которой мой шаблон продиктовал то, что должен быть InnerGlowColor. Однако, применяя к элементу атрибут InnerGlowColor = "Teal", я создал переопределение, игнорируя мой визуальный стиль. Решение состояло в том, чтобы просто удалить свойство зависимостей в объявлении элемента.