Caliburn.Micro ShowPopup - 设置焦点

时间:2013-05-02 16:38:03

标签: wpf mvvm caliburn.micro

我正在尝试使用Caliburn.Micro(我的第一个WPF MVVM项目),我正在努力获取WindowManager.ShowPopup方法将焦点设置到弹出屏幕。这可能吗?来自Caliburn的示例HelloWindowManager也没有这样做,文档非常清晰。

1 个答案:

答案 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有一点学习曲线,但到目前为止,我已经能够克服我遇到的障碍,并且我继续沿着这条路走下去。