0

我正在开发一个基于 MVVM 和 AddIns 的应用程序。我想通过包含基于 MVVM 的程序集的 AddIn 模块动态构建菜单(功能区控件)。在主机端,我无法触发通过 ViewModel 绑定的命令,该命令托管在与主机应用程序不同的 appdomain 中。我应该如何通过所有绑定到相应插件模块的命令/图标来解决这个动态功能区选项卡生成问题。

编辑: 我开发了一个基于 MVVM 的应用程序。所有应用程序状态和命令都在 ViewModel 中,并且绑定到 View,按预期工作。之后,我们使用 .net 的托管插件框架 (MAF) 编写代码,并通过它合并该应用程序。问题来了,我们无法根据主机端插件中的命令生成菜单。我编写了一个属性来将 ViewModel 插件中的菜单返回到主机,但它只返回普通对象,并且命令不会通过插件框架传播。这是一个代码示例:

public IEnumerable<TabViewModel> MenuTabs
{
    get
    {
        var tab = new TabViewModel{ Header = "Tab 1"};
        var group = new GroupViewModel {Header = "Group 1"};
        var button = new ButtonViewModel{Content = "Say Hello", Command = HelloCommand};
        group.Buttons.Add(button);
        tab.Groups.Add(group);
        return new[] {tab};
    }
}

此代码是用 say 编写的TestViewModelHelloCommand是 WPF 输入库中 ICommand 接口的实现。HelloCommand 没有到达主机端,其他一切都可用,我正在正确获取功能区控件的选项卡和组,但命令没有传输到插件主机。

Edit2 问题是,我们想在 AddIn-Host 窗口中显示功能区,这些按钮引用 AddIn 的 ViewModel 中的命令,最后(我可以)是将菜单控件也移动到 AddIn。有没有人遇到过同样的问题,想分享一下经验?

4

0 回答 0