1

我们正在使用 PRISM 将大型应用程序划分为模块,每个模块将代表我们公司的一个部门:

HumanResources
Accounting
InformationSystems
(...)

每个模块将有几个视图。例如,Accounting.Module可能有:

BusinessIntelligenceView(/Model)
ReportingView(/Model)

我希望应用程序加载模块(我将手动输入ModuleCatalog)。然后,我想ShellView自动显示可用视图的列表,用户可以使用它来选择要注入主区域的视图。

这可能吗?

谢谢!

4

1 回答 1

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 中注册相应的视图......

var view = GetInstance<IView>(selectedAvailableView.ViewName);
RegionManager.RegisterViewWithRegion("whateverRegion", () => view);

希望能帮助到你 :)

于 2012-08-28T20:18:34.623 回答