如何根据选定的视图和视图模型用上下文项更新我的功能区?

问题描述 投票:0回答:1

在我的 Prism 应用程序中,我有一个功能区,我希望能够根据当前活动的视图和视图模型用上下文命令更新。 当视图被打开时,我的功能区就会用上下文命令更新(在 OnNavigatedTo),但我不知道如何在用户点击标签控件中的项目时更新我的功能区。

我打算使用Prism的 IEventAggregator 当用户点击一个新的标签时,发送一个 "活动视图已更改 "事件,然后让每个视图模型订阅该事件,如果活动标签项是该视图模型的标签,则让该视图模型更新功能区。 问题是,我需要我的事件数据包含一些参数,指定活动标签页包含什么,但我不知道如何确定哪个视图模型链接了活动标签页控制项。

我如何知道哪个视图模型对应于标签控制项,或者有没有其他方法解决这个问题?

prism prism-7
1个回答
1
投票

你可以让所选选项卡的视图模型来完成这项工作,没必要把事情搞得太复杂。

xaml:

<TabControl SelectionChanged="OnSelectionChanged"/>

cod-behind:

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
}
© www.soinside.com 2019 - 2024. All rights reserved.