Как настроить фокус клавиатуры на содержимое ContentPresenter при его изменении? - PullRequest
4 голосов
/ 04 августа 2010

В моем представлении есть ContentControl, который привязан к свойству CurrentItem моей viewmodel. Каждый объект, предоставляемый через CurrentItem, имеет свой собственный DataTemplate.

Когда свойство CurrentItem изменяется, отображается соответствующий шаблон данных для этого элемента, как и должно быть. Однако я не могу найти способ установить фокус клавиатуры на содержимое DataTemplate.

Даже если я вручную установлю фокус клавиатуры на DataTemplate, если свойство CurrentItem изменяется (и создается новый шаблон), фокус теряется (FocusManager.GetFocussedElement возвращает ноль).

Как настроить фокус клавиатуры на содержимое ContentPresenter при его изменении?

1 Ответ

0 голосов
/ 24 февраля 2011

Я полагаю, что вы можете использовать событие LayoutUpdated в ContentControl или ContentPresenter. Это должно срабатывать каждый раз, когда изменяется Content / ContentTemplate / etc.

В качестве альтернативы вы можете получить класс из ContentControl, а затем переопределить методы OnContentChanged , OnContentTemplateChanged и т.д. Затем вам нужно поискать по визуальному дереву и установить фокус. Возможно, вам придется использовать Диспетчер для задержки кода настройки фокуса.

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