dataGrid.SelectedItems не может быть очищен после замены двух строк из программы - PullRequest
0 голосов
/ 27 мая 2020

У меня есть DataGrid в WPF. Я использую этот метод для привязки SelectedItems к моей виртуальной машине. Я создал команду, которая меняет местами две выбранные строки DataGrid. (На самом деле я меняю идентификаторы, обновляю db и перезагружаю (упорядоченный по идентификатору) ObservableCollection в DataGrid) После этого я не вижу выбора в DataGrid, но dataGrid.SelectedItems все еще содержит две строки. Я проверил это в CodeBehind. Если я выберу строку, тогда dataGrid.SelectedItems теперь содержит 3 элемента. Я безуспешно пытался очистить выделение из CodeBehind. Я пробовал эти методы.

        dataGrid.UnselectAll();
        dataGrid.UnselectAllCells();
        dataGrid.SelectedCells.Clear();
        dataGrid.SelectedItem = null;
        dataGrid.IsEnabled = false;
        dataGrid.IsEnabled = true;
        Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => dataGrid.Items.Refresh()));

Если я выберу две строки и попытаюсь отменить выбор перед заменой строк, тогда UnselectAll () будет работать отлично.

1 Ответ

0 голосов
/ 28 мая 2020

Хорошо, решение заключалось не в том, как отменить выбор строк, а в том, когда это делать. Он отлично работал до того, как поменять местами строки. Я мог бы сделать это из ViewModel.

Pager.SelectedRow = null;

, где SelectedRow привязан к DataGrid.SelectedItem.

...