Я выполняю проверку внутри события изменения выбранной сетки данных.Если мое условие выполнено, код должен быть выполнен и выбранный элемент должен быть выделен (или получен фокус), если условие не выполнено, элемент управления должен вернуться, а ранее выбранный элемент должен остаться выбранным.
Что происходитздесь, если условие не выполнено, выбранный элемент не изменяется (который работает как требуется), но фокус все еще перемещается на выбранную ячейку, поэтому выбранный элемент ячейки - это предыдущая ячейка, в то время как находящийся в фокусе - это ячейка, котораяЯ запустил событие.
Я попробовал подход datagrid.dispatcher.invoke, но, похоже, это не работает.Также я попытался установить datagrid.selectedindex = e.removeditem [0], который снова приводит элемент управления в событие изменения выбора, таким образом, помещая в непрерывный цикл.
Пожалуйста, предложите что-нибудь.
РЕДАКТИРОВАТЬ :
dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!IsDirty)
{
if (e.AddedItems.Count > 0)
{
SelectedProfile = e.AddedItems[0] as profile;
}
if (e.RemovedItems.Count > 0)
{
}
}
else
{
MessageBox.Show("Save the profile selected", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
}