我正在尝试使用Caliburn.Micro(我的第一个WPF MVVM项目),我正在努力获取WindowManager.ShowPopup方法将焦点设置到弹出屏幕。这可能吗?来自Caliburn的示例HelloWindowManager也没有这样做,文档非常清晰。
答案 0 :(得分:1)
最终,我无法按照我的意愿使用ShowPopup
方法。
我所做的是使用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有一点学习曲线,但到目前为止,我已经能够克服我遇到的障碍,并且我继续沿着这条路走下去。