Я хочу проверить свою 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;
}