2

ItemsSource にバインドされた DataGrid コントロールがあります。私のItemsSourceはObservableCollectionであり、注文したアイテムを常に挿入します。DataGrid の値とそのインデックスに応じて、DataGrid の各行の背景を設定する必要があります。それを行う方法を知っていますか?注: ObservableCollection は別のスレッドによって更新されるため、更新時にグリッドの背景色を更新する必要があります。

コンバーターを使用して同様のことを行っている人を見たことがありますが、私のビジネス ロジックはすべて ViewModel にあり、そこから値を取得して、どの色が背景になるかを調べる必要があります。

前もって感謝します。

4

1 に答える 1

1

LoadingRow イベント ハンドラーを DataGrid に追加してから、それぞれの項目のビュー モデル プロパティで各行の Background プロパティへのバインディングを設定できます。

XAML データグリッド:

<data:DataGrid ItemsSource="{Binding FooBars}" LoadingRow="dataGrid_LoadingRow" >
    <data:DataGrid.Columns>
        <data:DataGridTextColumn Header="FOO" Binding="{Binding Foo}" Width="200" />
        <data:DataGridTextColumn Header="BAR" Binding="{Binding Bar}" Width="60"/>
    </data:DataGrid.Columns>
</data:DataGrid>

分離コード:

private void packetsDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
    Binding backgroundBinding = new Binding("FooBarItemBackground");
    backgroundBinding.Source = e.Row.DataContext;
    e.Row.SetBinding(DataGridRow.BackgroundProperty, backgroundBinding);
}
于 2012-04-12T17:21:29.923 に答える