2

MVVM アーキテクチャを使用しており、データグリッドの行の色を変更したいと考えています。行の色は、モデルのアイテムによって異なります。

これまでのところ、私はこのコードを持っています:

private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e) {
        Log4NetLog dataGridRow = e.Row.DataContext as Log4NetLog;
        if (highlight) {
            if (dataGridRow != null) {
                e.Row.Background = new SolidColorBrush(
                    dataGridRow.LogColour.Colour);
            }
        } else {
            e.Row.Background = new SolidColorBrush(Colors.White);
        }
}

ご覧のとおり、2 行目Log4NetLogでは、モデル内の a への参照を作成する必要があります。

では、コードを変更して MVVM パターンを適応させるにはどうすればよいでしょうか?

4

1 に答える 1

2

DataGrids ItemsSource が Log4NetLog のコレクションにバインドされていると想定しているため、xaml でスタイリングを行うことができます。

        <DataGrid.ItemContainerStyle>
            <Style TargetType="{x:Type DataGridRow}">
                <Setter Property="Background" Value="{Binding Path=LogColour.Colour}"/>
            </Style>
        </DataGrid.ItemContainerStyle>

Color to SolidColorBrush Converter が必要かもしれません。

于 2013-02-21T08:35:21.900 に答える