[WPF] Управление фокусом контролов из ViewModel
От: HowardLovekraft  
Дата: 28.01.11 07:36
Оценка:
Приветствую.

На англоязычных форумах наткнулся на две точки зрения по поводу сабжа:
1) фокус элемента управления — зона ответственности View, и ViewModel не должна влиять на него;
2) фокус может и должен управляться из ViewModel, т.к. она содержит логику.

Сам склоняюсь ко второму варианту, т.к. помимо задчи начальной установки фокуса, которую, на первый взгляд, просто решить во View, существует ряд проблем, которые, кмк, удобно разрешать из ViewModel. Например:
1) View может быть несколько, а редактирование важно всегда начинать с одного и того же свойства ViewModel;
2) При определенных значениях свойств ViewModel, заданных ранее, имеет смысл переключиться на ввод ввод значения для какого-то определенного свойства;
3) При реализации undo/redo выполнение undo-операции удобно совмещать с установкой фокуса на соответствующий элемент управления;
4) Если значение свойство не валидно, то в результате валидации удобно не только выдать подсказку, но и установить фокус на контроле, соответствующем свойству.

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

Возможно, я узко смотрю на задачу со строны своей предметной области, возможно, не вижу подводных камней.
Интересует мнение сообщества RSDN — кто какой т.з. придерживается (аргументированно — почему)?
Приветствуются ссылки на обсуждения проблемы ранее (на RSDN) и ссылки на реализации подхода к управлению фокусом из ViewModel.

Дискуссии на эту тему на codeproject и вопросы на stackoverflow читал. В блоге Josh Smith, Dr. WPF и на профильном форуме MS копался.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.