我有带有工具栏的复合应用程序,我想让我的模块可以向工具栏添加一些按钮。据我了解,应该使用 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 类内部不是一个好主意。第二个问题是按钮是在其他模块初始化之前创建的,所以我不能引用其他模块注册的服务。
我到底做错了什么?将来自多个模块的操作收集到一个工具栏中的正确方法是什么?