【问题标题】:PRISM + Silverlight: Module and View DiscoveryPRISM + Silverlight:模块和视图发现
【发布时间】:2012-08-28 13:57:40
【问题描述】:

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

HumanResources
Accounting
InformationSystems
(...)

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

BusinessIntelligenceView(/Model)
ReportingView(/Model)

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

这可能吗?

谢谢!

【问题讨论】:

    标签: c# silverlight prism


    【解决方案1】:

    我不是专家,我不认为它是内置在 prism 中的,但这绝对是可能的 :)

    给你的一些提示...请善待,我没有使用 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);
    

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      相关资源
      最近更新 更多