Возникла необходимость менять свойство 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>

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2013 Вино из одуванчиков Suffusion theme by Sayontan Sinha