У меня есть следующий XAML, используемый для отображения подробной информации об элементе, выбранном в виде списка. Я хочу, чтобы прямоугольник отображал стандартный информационный цвет за текстом, за исключением случаев, когда выбранный элемент представляет сообщение об ошибке. Код ниже не работает, как есть, и всегда показывает информационный цвет. Он отлично работает, если я не укажу Fill
для корневого элемента <Rectangle />
.Как переопределить свойство bound с DataTrigger
<Rectangle Fill="{DynamicResource {x:Static SystemColors.InfoBrushKey}}"
RadiusX="4" RadiusY="4">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=CurrentMessage.Severity"
Value="Error" >
<Setter Property="Fill" Value="#20FF0000" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
Сниппает не отражает, но реальный код имеет довольно много возможных уровней состояния для Серьезности, так что я не хочу, чтобы определить триггер для каждой возможной степени тяжести. Логика, которую я хочу, - «Использовать информационный цвет, если только серьезность не является ошибкой, а затем используйте красный цвет».
Я уверен, что неправильно понял какой-то фундаментальный аспект WPF, но, похоже, не могу точно определить его. Может ли кто-нибудь указать мне в правильном направлении, чтобы указанные триггеры данных переопределили существующее значение Fill, когда их условия верны?
Да, это сработало. Хотя ... можешь объяснить, почему? Мне кажется, что свойство Fill на Rectangle будет эквивалентным. –
Не могу, нет. Это просто из опыта. Я предполагаю, что он установлен на самом объекте, переопределяя что-либо внутри стиля. –