DataGrid RowValidationRule не будет вызываться при изменении списка - PullRequest
0 голосов
/ 24 мая 2018

Я хочу проверить свою DataGrid с помощью RowValidationRule, но 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>

Привязка SelectedFiles таблицы данных представляет собой ObservableCollection, которая содержит объекты размещенного класса ниже.

public class SelectedFileModel 
{
  public FileType RelatedFileType {get; set;}
  public string FileName {get; set;}
  public string FilePath {get; set;} 
}  

В комбинированном ящике содержится перечисление типа FileType.

И метод CellEditEnding в моем представлении.

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