WPF xaml:如何使用自动生成的列验证 DataGrid 中的单元格

WPF xaml: How to validate Cells in DataGrid with automatically generated Columns

如何在自动生成的 DataGrid(来自 DataTable)中添加单元格验证并在值无效时将单元格设置为红色?

这是我的数据网格:

    <DataGrid Grid.Row="2"
              Margin="5"
              Background="Transparent"
              MaxHeight="300"
              MaxWidth="500"
              ScrollViewer.CanContentScroll="True"
              HorizontalAlignment="Center"
              VerticalAlignment="Center"
              ItemsSource="{Binding DataTable}"
              HeadersVisibility="None"
              CellStyle="{StaticResource tableCellTheme}"
              CanUserAddRows="False">

我也加了

        <DataGrid.RowValidationRules>
            <validation:DataGridValidation ValidationStep="UpdatedValue" />
        </DataGrid.RowValidationRules>

但我不想评估整行,更重要的是,如果此 returns 为假,我不知道如何将有问题的单元格设置为红色... 感谢您的帮助!

您必须处理 DataGrid.AutoGeneratingColumn 事件,获取对列绑定的引用,然后启用绑定验证并将 ValidationRule 附加到它:

MainWindow.xaml

<DataGrid AutoGeneratingColumn="EnableCellValidation_OnAutoGeneratingColumn" />

MainWindow.xaml.cs

private void EnableCellValidation_OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
  if (e.Column is DataGridBoundColumn column)
  {
    var columnBinding = column.Binding as Binding;
    columnBinding.ValidatesOnDataErrors = true;
    columnBinding.ValidationRules.Add(new DataGridValidation());
  }
}