2013-08-16 4 views
2

Я работаю над проектом C# WPF, который я использую триггер стиля, чтобы стиль цвета фона каждой строки основывался на одном из значений ячейки.Отключение триггеров стиля, созданных в xaml programatically

Ниже приводится мой триггер.

<Window.Resources> 
     <Style TargetType="DataGridRow"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Highest Alarm Level}" Value="Critical"> 
        <Setter Property="Background" Value="Red" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Highest Alarm Level}" Value="Medium"> 
        <Setter Property="Background" Value="Orange" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Highest Alarm Level}" Value="Warning"> 
        <Setter Property="Background" Value="Yellow" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Highest Alarm Level}" Value="Info"> 
        <Setter Property="Background" Value="White" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 

Что мне нужно, чтобы быть в состоянии сделать, при определенных обстоятельствах, я не хочу, этот стиль будет использоваться, так что я после, является ли в C# код определенное условие становится истинным, Я хочу отключить все сделанные выше стили, чтобы их не использовать, т. Е. Весь стиль отключен, поэтому цвет фона строк не задан.

Спасибо за любую помощь, которую вы можете предоставить.

+0

Создайте еще один 'Style' без каких-либо триггеров и переключаться между обоими в C# код. – Nitesh

+0

Можете ли вы предоставить ссылки на примеры и учебные пособия. Все, что я нашел в сети, похоже, не работает – Boardy

+0

Пожалуйста, проверьте мой ответ. – Nitesh

ответ

2

Добавить ключ к вашему обычаю DataGridRowStyle

<Style TargetType="DataGridRow" x:Key="MyRowStyle"> 
    <!-- Define Triggers --> 
</Style> 

Тогда вам просто нужно переключаться между умолчанию и пользовательских стилей.

Если вы установили Style с null, это означает, что по умолчанию Style будет применяться

dataGrid.RowStyle = _boolCondition ? this.FindResource("MyRowStyle") as Style : null; 
+1

Спасибо за помощь. Прекрасно работает. Я был почти там, но я использовал dataGrid.style вместо dataGrid.RowStyle. – Boardy

Смежные вопросы