你可以一個LoadingRow事件處理程序添加到您的DataGrid,然後就各自項目的視圖模型屬性設置一個綁定到每個行的背景屬性:
XAML的DataGrid:
<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);
}
有一個問題...例如:當我添加新行時,我必須更新下面的每一行都必須更新其背景。 – Augusto 2012-04-12 17:58:33
沒問題:)當添加一個新行可能觸發視圖模型上的事件來更新每個項目的背景顏色屬性。由於它的數據綁定,你不必重新綁定網格或任何東西。 – KodeKreachor 2012-04-12 18:00:43
這聽起來像我使用的方式也應該是要走的路 – Stainedart 2012-04-12 18:23:03