簡體   English   中英

如何在代碼后面設置DataGrid行的背景顏色?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM