Prism / mvvm: как связать GotFocus of View с действием? - PullRequest
1 голос
/ 22 февраля 2011

У меня есть вид призмы / mvvm, и я хочу уведомить ViewModel, если вид получил или потерял фокус.

Я думаю, мне нужно привязать GotFocus вида кдействие во ViewModel, но я не знаю, с чего начать.

Конечно, это стандартная проблема, которая где-то решена, и я просто не могу найти решение?

1 Ответ

1 голос
/ 22 февраля 2011

Вы можете использовать InvokeCommandAction поведение. Это поведение определяется в сборке System.Windows.Interactivity, которая является частью Expression Blend. При таком поведении вы можете привязаться к событию GotFocus вашего представления и выполнить команду в вашей viewModel.

Тот же подход вы можете использовать для LostFocus. Здесь - пример использования InvokeCommandAction.

Одна вещь о GotFocus от UserControl. Вы должны знать, что событие GotFocus в View вызывается, когда элемент управления, такой как TextBox, получает фокус. Вы не можете сфокусировать UserControl самостоятельно.

[Update] GotFocus в UserControl повышается, когда IsTabStop установлен в true

Не можете ли вы использовать IActiveAware интерфейс платформы призмы. Свойство IsActive устанавливается, когда представление перемещается в регионе.

Интерфейс может быть реализован в View и ViewModel (требует, чтобы экземпляр viewmodel был установлен как DataContext для представления), чтобы получать уведомления, когда представление активируется в регионе.

...