Как установить фокус на TextBox без обработчика событий - PullRequest
1 голос
/ 30 июня 2011

Я хочу, чтобы HyperLink.Click событие установило TextBox.IsFocused в true. Я использую mvvm, и мне интересно избегать какого-либо кода в моем View, поэтому я ищу решение без обработчика события HyperLink.Click. Мне нужно спроектировать Commmand, но свойства IsFocused, IsKeyboardFocused, IsKeyboardFocusWithin доступны только для чтения ... Так что я нашел решение - я могу установить CommandParameter={Binding ElementName=MyTextBox}. Но так моя реализация ICommand получает элемент пользовательского интерфейса. Допустимо ли с шаблоном MVVM получить элемент пользовательского интерфейса как CommandParameter? Есть ли другой способ сделать это без View code-behind?

1 Ответ

2 голосов
/ 30 июня 2011

Создайте прикрепленное поведение, чтобы установить фокус на элемент UIElement. см. Здесь о том, как создать поведение

Сделайте привязку AttachedBehavior к свойству IsFocued в Viewmodel для AssociatedObject.

Всякий раз, когда viewmodel изменяет свойство IsFocused на true (с помощью некоторой команды в viewmodel), присоединенное поведение узнает через привязку данных и вызывает Focus () в UIElement.

...