以编程方式更改WPF Datagrid Row背景颜色

时间:2018-11-20 11:36:56

标签: c# wpf datagrid

当我尝试在WPF应用程序后面的代码中更改数据网格行时遇到问题,我的目标是在选择行并单击按钮“ Valider”时更改行颜色,我的代码是如下所示。 我找到了一些答案,但没有一个对我的案子有用。

 private void Valider_Click(object sender, RoutedEventArgs e)
    {
        DataGridRow dataGridRow = InventaireItemGrid.SelectedItem as DataGridRow;

         dataGridRow.Background = Brushes.Green;
      }

执行时,我得到一个nullreferenceexception,调试器将dataGridRow指向为null(尽管该行包含数据)。

1 个答案:

答案 0 :(得分:1)

SelectedItem属性引用Items集合中的相应对象。您可以使用ItemContainerGenerator获取对DataGridRow容器的引用:

private void Valider_Click(object sender, RoutedEventArgs e)
{
    DataGridRow dataGridRow = InventaireItemGrid.ItemContainerGenerator.ContainerFromItem(InventaireItemGrid.SelectedItem) as DataGridRow;
    if (dataGridRow != null)
        dataGridRow.Background = Brushes.Green;
}

尽管您想尝试做的事,最可能有更好的方法,例如使用数据绑定和触发器。