2

我正在尝试使用 Caliburn.Micro (对于我的第一个 WPF MVVM 项目),我正在努力让 WindowManager.ShowPopup 方法将焦点设置到弹出屏幕。这可能吗?来自 Caliburn 的示例 HelloWindowManager 也没有这样做,而且文档也很简单。

4

1 回答 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 回答