0

我有带有工具栏的复合应用程序,我想让我的模块可以向工具栏添加一些按钮。据我了解,应该使用 RegionManager 来提供这种可能性。

我写了这样的代码:

public class MyModule : IModule
{
    private readonly IUnityContainer _container;
    public MyModule(IUnityContainer Container) { _container = Container; }

    public void Initialize()
    {
        var regionManager = _container.Resolve<RegionManager>();
        regionManager.RegisterViewWithRegion("MainToolbar",
                                             () => new Button
                                                   {
                                                       Content = "My Button",
                                                       Command = new DelegateCommand(/*  */)
                                                   });
    }
}

但根据 MVVM 模式,似乎从代码创建按钮,尤其是在 Module 类内部不是一个好主意。第二个问题是按钮是在其他模块初始化之前创建的,所以我不能引用其他模块注册的服务。

我到底做错了什么?将来自多个模块的操作收集到一个工具栏中的正确方法是什么?

4

1 回答 1

0

您的想法是正确的,只需将按钮换成包含按钮的视图即可。然后使工具栏成为一个区域并将“按钮”视图注入“工具栏”区域。

如果您的模块依赖于来自其他模块的服务,请使您的模块依赖于这些模块,以便 prism 确保首先初始化服务:

[ModuleDependency("ServiceModule")]
public class ModuleA : IModule
{
    ...
}

public class ServiceModule : IModule
{
    ...
}
于 2016-06-10T07:01:57.810 回答