我们正在使用PRISM将大型应用程序划分为模块,每个模块都代表我们公司的一个部门:
HumanResources
Accounting
InformationSystems
(...)
每个模块都有几个视图。例如,Accounting.Module
可能包含:
BusinessIntelligenceView(/Model)
ReportingView(/Model)
我希望发生的是应用程序加载模块(我将手动输入ModuleCatalog
)。然后,我希望ShellView
自动显示可用视图列表,用户可以使用它来选择要注入主区域的视图。
这可能吗?
谢谢!
答案 0 :(得分:0)
我不是专家,我认为它不是内置在棱镜中,但这绝对是可能的:)
为您提供的一些提示...请善待,我没有使用IDE编写任何代码行:)
首先,您可以创建一个视图(和一个视图模型)来显示可用视图列表。那些“可用视图”可以由定义视图信息的类表示。
类似的东西:
public interface IAvailableView
{
string ViewName { get; }
string ModuleName { get; }
}
其次,为了能够显示所有可用的视图,需要在目录中“模块化”时加载模块。然后在应用程序初始化时触发它们。
在您的模块中,您现在应该在特定名称下注册您的视图,并且可以在依赖项容器中注册它所公开的所有可用视图。
public virtual void Initialize()
{
RegisterView<IView, AnyView>("AnyView");
Register<IAvailableView>(new AvailableView("AnyView", "MyModuleName"));
}
加载完所有模块后,您的视图模型控件应该能够解析所有这些IAvailableViews。
现在,您需要做的就是将这些可用视图绑定到控件上,并在用户单击某个项目后在RegionManager中注册correspoding视图...
var view = GetInstance<IView>(selectedAvailableView.ViewName);
RegionManager.RegisterViewWithRegion("whateverRegion", () => view);
希望有所帮助:)