我正在尝试使用 Caliburn.Micro (对于我的第一个 WPF MVVM 项目),我正在努力让 WindowManager.ShowPopup 方法将焦点设置到弹出屏幕。这可能吗?来自 Caliburn 的示例 HelloWindowManager 也没有这样做,而且文档也很简单。
问问题
1349 次
1 回答
1
最终,我无法让该ShowPopup
方法按我的意愿工作。
我所做的是 use ShowWindow
,然后在显示窗口时使用 EventAggregator 发布事件。在被调用视图的 ViewModel 中,我订阅了该事件,并将 ViewModel 上的属性设置为 true(在本示例中名为 KeywordEntryActive)。
然后,我在 Grid 上使用一个 Style,它使用绑定到该属性的 DataTrigger 来调用 View 中的 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 和 View 分离的情况下完成我正在寻找的东西,所以我对此感到满意。Caliburn.Micro 有一些学习曲线,但到目前为止,我已经能够克服遇到的障碍,并且我将继续沿着这条道路前进。
于 2013-05-03T20:34:48.450 回答