0

在我的 Prism 应用程序中,我有一个功能区,我希望能够使用基于当前活动视图和视图模型的上下文命令进行更新。最初打开视图时(在 中OnNavigatedTo),我使用上下文命令更新了功能区,但是当用户在我的选项卡控件中的项目之间单击时,我无法弄清楚如何更新我的功能区。

我计划在IEventAggregator用户单击新选项卡时使用 Prism 发送“活动视图已更改”事件,然后让每个视图模型订阅该事件并让视图模型更新功能区(如果活动选项卡项是)查看模型的选项卡。问题是我需要我的事件数据包含一些参数,这些参数指定活动选项卡包含的内容,但我不知道如何确定哪个视图模型链接到活动选项卡控件项。

我如何知道哪个视图模型对应于选项卡控件项,或者是否有其他方法可以解决此问题?

4

1 回答 1

1

您可以让所选选项卡的视图模型完成工作,无需过于复杂:

xml:

<TabControl SelectionChanged="OnSelectionChanged"/>

代码隐藏:

private void OnSelectionChanged( object sender, SelectionChangedEventArgs e ) => (((sender as TabControl)?.SelectedContent as FrameworkElement)?.DataContext as IRibbonAwareViewModel)?.OnSelected();

由选项卡的视图模型实现的接口:

internal interface IRibbonAwareViewModel
{
    void OnSelected(); // <-- here the view model updates the ribbon
}
于 2020-06-09T19:45:50.660 回答