【问题标题】:How can I update my ribbon with context items based on the selected view and view model?如何根据所选视图和视图模型使用上下文项更新功能区?
【发布时间】:2020-06-09 19:16:31
【问题描述】:

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

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

我如何知道标签控件项对应的视图模型是什么,或者有其他方法可以解决这个问题吗?

【问题讨论】:

    标签: prism prism-7


    【解决方案1】:

    你可以让所选标签的视图模型完成工作,无需过于复杂:

    xaml:

    <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
    }
    

    【讨论】:

    • 谢谢,这比我想做的要容易得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多