DataGrid теряет "KeyboardFocusWithin" - PullRequest
       2

DataGrid теряет "KeyboardFocusWithin"

0 голосов
/ 29 октября 2019

У меня есть простое "DataGridUsercontrol", в котором есть Datagrid с одним текстовым столбцом (мне нужно использовать это снова и снова). Это Usecontrol выставляет MyItemSource и MySelectedItem как Dependency Properties, которые в свою очередь связаны с DataGrid - Это позволяет мне определять их в UserControl с использованием DataGridUsercontrol.

DataGridUsercontrol также предоставляет несколько ICommand DP, которые подключены к контекстному меню и клавиатурным вводам. (Это - то, где повторное использование вступает в игру.)

Я не уверен, имеет ли это DataGrid в повторно используемом UserControl какое-либо отношение к проблеме, но я хотел быть законченным.

Один ввод с клавиатуры, который у меня есть, CTRL + Up с использованием связывания клавиш. Это подключается к DelegateCommand в виртуальной машине, которая перемещает SelectedItem «вверх» на один пробел в ObservableCollection. По сути, это список, который пользователь может изменить в порядке.

Я использую Prism 7 и Unity DI, но это действительно не входит в игру.

Я могу переместить элементвверх или вниз без проблем.

Однако, сразу после изменения на ObservableCollection, DataGrid теряет KeyboardFocusWithin (это подтверждается перехватом события, а также проверкой его в анализаторе WPF, где яможет смотреть IsKeyboardFocusWithin. Эффект в том, что Datagrid больше не слушает ввод с клавиатуры. Таким образом, я должен повторно выбрать таблицу, если я хочу снова использовать клавиатуру.

SelectedItem не делаетне изменяется. SelectedIndex правильно изменяется, чтобы следовать за тем, куда был перемещен SelectedItem. Обычная «синяя» подсветка заменяется светло-серой подсветкой.

Мой вопрос заключается в том, как сохранить фокусировку илиЕсть ли хорошее событие для правильной установки фокуса.

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