C# DataGrid RowValidationRule获胜';组合框更改时不能调用

C# DataGrid RowValidationRule获胜';组合框更改时不能调用,c#,wpf,mvvm,wpfdatagrid,validationrules,C#,Wpf,Mvvm,Wpfdatagrid,Validationrules,我想用RowValidationRule验证我的DataGrid,但是如果我在组合框中选择另一项,则不会调用ValidationRule 只有在更改DatagridTextColumn中的文本时,才会调用验证规则 <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding SelectedFiles, UpdateSourceTrigger=PropertyChanged}" SelectedIndex="{Bindin

我想用RowValidationRule验证我的DataGrid,但是如果我在组合框中选择另一项,则不会调用ValidationRule

只有在更改DatagridTextColumn中的文本时,才会调用验证规则

<DataGrid AutoGenerateColumns="False"
  ItemsSource="{Binding SelectedFiles, UpdateSourceTrigger=PropertyChanged}" 
  SelectedIndex="{Binding SelectedDataGridRow, UpdateSourceTrigger=PropertyChanged}"
 CellEditEnding="SelectedFilesDataGrid_CellEditEnding">

 <DataGrid.RowValidationRules>
   <valid:SaveComponentValidationRule ValidationStep="UpdatedValue"/>
 </DataGrid.RowValidationRules>

 <DataGrid.Resources>
  <DataTemplate x:Key="comboTemplate">
    <ComboBox IsSynchronizedWithCurrentItem="False" 
        ItemsSource="{Binding DataContext.FileDataTypes, ValidatesOnDataErrors=True,                             
             RelativeSource={RelativeSource AncestorType=local:SaveComponentView},UpdateSourceTrigger=PropertyChanged}"                                  
        SelectedValue="{Binding RelatedFileType, UpdateSourceTrigger=PropertyChanged}"      
        IsEnabled="{Binding IsEditing, RelativeSource={RelativeSource AncestorType=DataGridCell}}"/>
  </DataTemplate>                    
 </DataGrid.Resources>


 <DataGrid.Columns>                    
   <DataGridTextColumn  Header="File Name" Binding="{Binding Path=FileName, UpdateSourceTrigger=PropertyChanged}"/>
   <DataGridTemplateColumn Header="Data Type" 
      CellTemplate="{StaticResource comboTemplate}"                                             
      CellEditingTemplate="{StaticResource comboTemplate}" />
 </DataGrid.Columns>
</DataGrid>
组合框包含FileType类型的枚举

在我看来,还有CellEditEnding方法

private void SelectedFilesDataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
  e.EditingElement.IsEnabled = false;
}

您没有CellEditingTemplate,因此该单元格永远不会进入编辑模式。如何使模板列能够正确编辑。我不知道“简单枚举”和复杂枚举之间有什么区别,所以我不能帮你。Thx为了快速回复,我采用了与你文章中相同的方式,不幸的是,它没有解决问题(RowValidationRule仍然没有调用更改)。关于“简单枚举”,我只是指一个普通枚举,因此我将其排除在post之外。RowValidationRule.Validate()在更改时被调用。我测试过了。你做了一些不同的事情。不要太有创意。只需按照我在回答中的方式设置模板,并确保组合框在未处于编辑模式时处于禁用状态。如果你不能让它工作,给我看你的代码的最新版本,我们会解决的。好的,显然我做错了一些关键的事情,我发布了上一个版本,如果你有时间发现问题的话。请把它放在你的问题中。
private void SelectedFilesDataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
  e.EditingElement.IsEnabled = false;
}