FocusManager.FocusedElement не будет привязываться к странице - PullRequest
0 голосов
/ 25 октября 2019

Раньше у меня было окно с прикрепленным свойством для отслеживания сфокусированного элемента управления:

FocusManager.FocusedElement="{Binding CurrentlySelectedTextBox, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"

В настоящее времяSelectedTextBox было свойством в модели представления окна.

Теперь у моего окна есть рамка. Содержимое фрейма представляет собой страницу. Я переместил содержимое исходного окна на страницу с его собственной моделью просмотра. Я переместил прикрепленное свойство из окна на страницу. С тех пор свойство CurrentSelectedTextBox никогда не устанавливается.

Долгие дни поиска ничего не дали. Являются ли страницы невосприимчивыми к FocusManager.FocusedElement?

Обновление: Если прикрепленное свойство находится в окне, FocusManager.FocusedElement устанавливается, даже если фокус находится на элементе управления страницы.

1 Ответ

1 голос
/ 31 октября 2019

В wpf есть концепция focusscope, которая может вызывать подобные проблемы.

Основная проблема в том, что ваша страница отличается от окна фокусом.

Focusscope позволяет wpf поддерживать логическийа не физическая концепция фокуса для элементов управления, таких как tabcontrol и menu.

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

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

...