Возникла необходимость менять свойство 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>
© 2013 Вино из одуванчиков Suffusion theme by Sayontan Sinha