Возникла необходимость менять свойство Foreground в DatagridTextColumn в зависимости от некоего значения. Цвет менять следовало только когда значение не равно нулю, в противном случае его следовало оставить таким же, как в самом DataGrid. Самое логичное и простое в таком случае – использовать Style.Triggers. Проблема в том, что в Style.Triggers невозможно указать, что менять Foreground нужно только когда значение не равно нулю, инверсии там нет. Решение было найдено по ссылке:
http://stackoverflow.com/questions/5327819/wpf-setting-foreground-color-of-entire-form.
Решение проблемы содержится в строке:
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}"/>
<tk:DataGridTextColumn Binding="{Binding Caption}">
<tk:DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Green"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Forbidden}" Value="0">
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type FrameworkElement}}, Path=(TextElement.Foreground)}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</tk:DataGridTextColumn.ElementStyle>
</tk:DataGridTextColumn>