Я пытаюсь использовать Caliburn.Micro (для моего первого проекта MVVM WPF), и я боюсь получить метод WindowManager.ShowPopup, чтобы установить фокус на всплывающее окно. Это возможно? Образец HelloWindowManager от Caliburn тоже не делает этого, и документация довольно светлая.Caliburn.Micro ShowPopup - установить фокус
ответ
В конечном счете, мне не удалось получить способ ShowPopup
работать так, как я хотел.
Вместо этого я использовал ShowWindow
, а затем использовал EventAggregator для публикации события, когда я показывал окно. В ViewModel для под названием View я подписался на это событие и установил для свойства ViewModel значение true (с именем KeywordEntryActive в этом примере).
Затем я использую стиль на гриде, который использует DataTrigger, связанный с этим свойством, чтобы вызвать метод FocusManager.FocusedElement в представлении.
<Grid.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding KeywordEntryActive}" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=Command}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
казалось менее простым, чем я надеялся, но я был в состоянии сделать то, что я искал, не жертвуя при этом разделение ViewModel и вида, так что я доволен в этой точке. Там была небольшая кривая обучения с Caliburn.Micro, но до сих пор мне удалось преодолеть препятствия, с которыми я столкнулся, и я продолжаю идти по этому пути.
- 1. Как установить фокус на элемент управления с помощью Caliburn.Micro MVVM
- 2. QComboBox :: showPopup() без анимации
- 3. Как установить начальный фокус для формы в Silverlight при использовании Caliburn.Micro
- 4. Как установить Caliburn.Micro с помощью NuGet
- 5. Установить фокус на WebElement?
- 6. установить фокус в GWT
- 7. Установить фокус в android
- 8. Установить фокус в QTableView
- 9. Установить фокус на элемент
- 10. Установить фокус явно CMFCRibbonEdit
- 11. Невозможно установить фокус элемента
- 12. Установить фокус на кнопку
- 13. Установить фокус в VisualStatemanager
- 14. WPF: Невозможно установить фокус
- 15. Установить фокус ввода TextField
- 16. Установить фокус на гиперссылку
- 17. Установить фокус после jAlert
- 18. Установить фокус EditText android
- 19. RevMob showPopup does't существует в последней версии
- 20. Почему Caliburn.Micro вызывает PropertyChanged
- 21. ModalContentPresenter с Caliburn.Micro
- 22. Caliburn.Micro EventAggregator
- 23. Как установить фокус на DIV
- 24. установить фокус динамически в многостраничном
- 25. Как установить Фокус после анимации
- 26. Как установить фокус по умолчанию?
- 27. Установить фокус на содержимое ContentPresenter
- 28. Установить фокус на открытии приложения?
- 29. Как установить фокус на JMenu?
- 30. Как установить фокус на NSButton?
Вы хотите, чтобы ваше всплывающее окно было модальным? –
Удивительно, если бы работа над вызовом 'Фокус' на одном из элементов управления всплывающих окон (я не думаю, что есть способ сосредоточиться на самом всплывающем окне). Если это так, вы можете просто создать некоторую функциональность, чтобы найти элемент по имени в представлении (используя «IViewAware.GetView()») и сфокусировать его после установки виртуальной машины. – Charleh
В конечном итоге я получил эту работу с помощью ShowWindow (а не ShowPopup), а также с помощью EventAggregator, чтобы опубликовать событие в ViewModel вызываемого окна ... там я установил свойство и использовал DataTrigger в представлении, чтобы установить фокус через FocusManager. Это может быть взлом, но, похоже, он работает. – fussmonkey