【发布时间】:2013-05-02 16:38:02
【问题描述】:
我正在尝试使用 Caliburn.Micro(用于我的第一个 WPF MVVM 项目)并且我正在努力让 WindowManager.ShowPopup 方法将焦点设置到弹出屏幕。这可能吗? Caliburn 的 HelloWindowManager 示例也没有这样做,而且文档也很简单。
【问题讨论】:
-
你想让你的弹出窗口是模态的吗?
-
想知道在其中一个弹出窗口控件上调用
Focus是否可行(我认为没有一种方法可以专注于实际弹出窗口本身)。如果是这样,您可以创建一些功能以在视图上按名称查找元素(使用IViewAware.GetView())并在虚拟机启动后将其聚焦。 -
我最终得到了这个组合使用 ShowWindow(不是 ShowPopup),还使用 EventAggregator 将事件发布到被调用窗口的 ViewModel ......在那里我设置了一个属性并使用了 DataTrigger通过 FocusManager 设置焦点的视图。这可能是一个 hack,但它似乎有效。
-
对我来说听起来不像是 hack - 没有理由视图不能依赖于事件聚合器之类的服务,并且您在视图模型和视图关注点之间保持良好的分离 - 你应该发布作为答案,我会投票:)
-
wpf 弹出焦点很痛苦......即使没有caliburn本身,我也无法让它工作......在调用
popup.IsOpen = true之后,我尝试了几种方法来聚焦第一个控件在弹出窗口中,没有运气
标签: wpf mvvm caliburn.micro