2010-02-01 3 views
1

У меня есть три сетки в моем UserControl, из которых один элемент управления отображается вовремя. В последнем столбце мне нужно использовать стиль, где мне нужно проверить данные и применить цвет ForeGround. Я могу написать стиль в каждом из элементов управления в 3 сетках, используя DataTriggers. Но я хочу конкретный стиль в ресурсе, который можно использовать где угодно. Я пробовал MultiDataTrigger, но это не служит моей цели, так как он проверяет 2 или более Континги на true в MultiDataTrigger.Conditions, тогда как мне нужно проверить данные в одном элементе управления. Есть ли альтернативное решение для достижения этого?Как использовать MultiDataTrigger для проверки единственного условия, которое должно быть истинным в Style.Triggers в WPF?

ответ

1

Если вы используете какую-то сетку, вы, вероятно, используете CellTemplate или другое свойство, подобное этому для выполнения своей задачи. Я думаю, вам нужно использовать разные стили в разных столбцах.

Но если эти стили одинаковы, кроме триггеров, то вы можете сделать один стиль со всем, что является общим для них обоих, а затем создать другой стиль, основанный на первом. Это немного похоже на наследование в ООП.

Вот как это может выглядеть следующим образом:

<Style x:Key="BaseStyle" TargetType="....."> 
    <!-- Common setters and triggers --> 
    <Setter ... /> 
    <Setter ... /> 
    <Setter ... /> 
</Style> 

<Style x:Key="InheritedStyle" BasedOn="{StaticResource BaseStyle}" TargetType="....."> 
    <!-- This style's specific setters and triggers --> 
    <Setter ... /> 
    <Style.Triggers> 
    ... 
    <Style.Triggers> 
</Style>