メモ書きブログ

日々の覚書

DataGridのデータによってセル背景色を変更する

列のヘッダごとBindしていると、

いまいち分からなくて

データを追加するごとに

grid.Columns[col].GetCellContent(rowObj) as TextBlock

からTextBlockのBackgroundプロパティを変更する、というのをやってみたが、

全く変わらなかった。

データトリガ―をなんとか使えないかなと思って色々試した結果、

AutoGeneratingColumnで、

        DataGridTextColumn col = e.Column as DataGridTextColumn;

        Style style2 = this.TryFindResource("inputCell") as Style;

        col.CellStyle = style2;

XAMLに、

    <Style TargetType="DataGridCell" x:Key="inputCell">

        <Style.Triggers>

            <DataTrigger Binding="{Binding RelativeSource={RelativeSource self}, Path=Content.Text}" Value="IN">

                <Setter Property="Background" Value="LightGreen"/>

            </DataTrigger>

        </Style.Triggers>

    </Style>

参考

https://social.msdn.microsoft.com/Forums/netframework/en-US/f179392a-ed2a-48d4-8bbf-2e29cb5b213b/c-wpf-201312398datagird-header12398style123982120530340123942279326356?forum=csharpgeneralja