[英]How to set the background color of a DataGrid row in code behind?
我在后面的代碼中創建了一個DataGrid
對象,並使用obj.ItemsSource
設置內容。
現在我想在后面的代碼中設置一個特定行的背景顏色。 我怎樣才能做到這一點?
更新:
我在后面的代碼中創建DataGrid
對象,如下所示:
var dataGrid = new DataGrid();
dataGrid.ItemsSource = BuildDataGrid(); // Has at least one row
var row = (DataGridRow) dataGrid.ItemContainerGenerator.ContainerFromIndex(0);
row.Background = Brushes.Red;
但是row
對象為null
。 這是為什么?
您可以使用dataGrid的ItemContainerGenerator獲取DataGridRow
。
如果要根據索引值選擇行,請使用ContainerFromIndex()方法:
DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator
.ContainerFromIndex(0);
如果想要根據item獲取行,請使用ContainerFromItem()方法:
DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator
.ContainerFromItem(item);
最后在行上設置背景:
row.Background = Brushes.Red;
更新 :
在GUI上看不到dataGrid之前,不會生成容器。 您需要等待容器生成,然后才能在DataGridRow上設置任何屬性 。
對於容器,我指的是DataGrid的DataGridRow。 您需要像這樣修改代碼:
var dataGrid = new DataGrid();
dataGrid.ItemsSource = BuildDataGrid();
dataGrid.ItemContainerGenerator.StatusChanged += (s, e) =>
{
if (dataGrid.ItemContainerGenerator.Status ==
GeneratorStatus.ContainersGenerated)
{
var row = (DataGridRow)dataGrid.ItemContainerGenerator
.ContainerFromIndex(0);
row.Background = Brushes.Red;
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.