Вы можете запустить действия «сохранить», привязав SelectedItem сетки к свойству вашей модели представления, и в установщике свойства вы можете сохранить ранее выбранный элемент, прежде чем заменить его новым выбранным элементом, вкратцепсевдокод это выглядело бы примерно так:
public MyDataObject SelectedItem
{
get { return _selectedItem; }
set
{
if (value != _selectedItem)
{
SaveMyItem(_selectedItem);
_selectedItem = value;
OnPropertyChanged("SelectedItem");
}
}
}
private MyDataObject _selectedItem;
<DataGrid ItemsSource="{Binding MyCollection}" SelectedItem="{Binding SelectedItem, UpdateSourceTrigger=PropertyChanged}" ...etc... />
Конечно, вам, возможно, придется немного подстроить этот подход - если для сохранения измененного элемента потребуется значительное количество времени, вам понадобитсясделать это в фоновом потоке.Если вы укажете проверку как часть привязок столбцов в сетке, пользователь не сможет выбирать и редактировать новую строку, пока данные не будут правильно проверены.