【问题标题】:Having multiple active instances with PRISM使用 PRISM 拥有多个活动实例
【发布时间】:2011-10-28 04:09:17
【问题描述】:

我在 PRISM、C# 中有一个应用程序,我想知道我是否可以执行以下操作:

我的应用程序底部有一个按钮栏,用作我的导航区域。用户点击按钮A,会弹出模块A的dashboard。

用户点击仪表板中的一个项目,他会来到一个关于该项目的详细信息页面。他正在进行一些更改,但在此过程中他收到了一封电子邮件。

他打开模块 B 并在模块 B 中创建一个新项目。

--> 此时打开了 2 个实例,模块 A 的详细信息页面和模块 B 的添加页面。我希望用户也能直观地了解这一点,因为会有一个“1”在模块 A 的按钮上方。

问题是,(如何)我可以用 PRISM 做到这一点。

tl;博士; PRISM 是否支持多个实例化视图? (这是对打开视图的“管理”,因此您可以选择打开哪个视图。)

我尝试用谷歌搜索,但找不到任何相关内容(可能是因为我不确定如何调用它,所以无法搜索:/)

非常感谢您提供任何信息,感谢您的宝贵时间。

【问题讨论】:

    标签: c# wpf prism multiple-instances


    【解决方案1】:

    以下是关于如何在 Prism 中发挥作用的简短介绍,包括指向 MSDN 中一个非常有用的部分的链接:

    Prism 有regions,这是对可以承载一个或多个其他控件(您的视图)的控件的抽象。每个区域可以添加任意数量的视图,并且每个区域中最多有一个视图处于活动状态。显示视图(包括作为活动视图的含义)的方式取决于region adapter,这是一个由 Prism 根据托管每个区域的控件类型自动创建的对象。

    【讨论】:

    • 嗨乔恩,谢谢你的链接,我一定会去看看!
    【解决方案2】:

    添加到 Jon 的帖子中。

    您可能想要使用 TabControl。如果您将 PRISM 的区域放入 TABCOntrol - 您将能够将所有实例视为选项卡。

    您可以在此处查看有关如何关闭选项卡的一些 XAML 的不错示例: Menu service in Prism application CAL

    因此,在“内部”- 如果您默认使用 MEF 导出它们,PRISM 将具有单例视图/视图模型。如果您将这些部分导出为非共享 - PRISM 将在容器(MEF 或 Unity)内保留同一视图的多个版本。但是,使用按钮 - 您不会获得特定的实例。

    所以,像这样使用 TabControl 作为容器: Menu service in Prism application CAL

    或者您可以编写自己的区域适配器并在其中跟踪实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 2023-03-18
      相关资源
      最近更新 更多