WPF, фокус клавиатуры сбрасывается после обновления ItemsSource - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть ListView, и я подписан на OnListKeyDown () .Если я получаю какие-либо левые или правые входные данные, я выполняю некоторую обработку, эффективно воссоздая ItemsSource объекта ListView.Когда я говорю «воссоздание», я имею в виду срабатывание этого:

OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));

Я заметил, что после этого, если я нажму вверх или вниз, сфокусированный элемент будет сброшен (вместо того, чтобы быть текущим, он будетбыть первым).Я попытался записать состояние во время события ввода, но все выглядит правильно.

1 Ответ

0 голосов
/ 07 декабря 2018

После нескольких дней борьбы я нашел, как сбросить фокус клавиатуры.Сначала необходимо кэшировать выбранный индекс, а затем, после завершения обновления, сбросить выбранный элемент и также сфокусировать его.Вот фрагмент кода для этого:

View.EntriesView.SelectedItem = View.EntriesView.Items[cacheIdx];
View.EntriesView.UpdateLayout();          
((ListViewItem)View.EntriesView.ItemContainerGenerator.ContainerFromIndex(cacheIdx)).Focus();

Спасибо @Alfie за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...