【问题标题】:PRISM - Reuse of Views With Child Regions - Can It Be Done?PRISM - 重用具有子区域的视图 - 可以做到吗?
【发布时间】:2011-06-16 16:08:12
【问题描述】:

我是一个 PRISM 新手,但我已经阅读了帮助文档,似乎无法找到如何实现以下目标(这是一个 WPF 应用程序)

我有一个Shell(窗口),它有两个区域,分别称为“region1”和“region2”。 在我唯一一个模块的Initialize 方法中,我在每个区域注册了相同的视图:

regionViewRegistry.RegisterViewWithRegion("Region1", typeof(View1));
regionViewRegistry.RegisterViewWithRegion("Region2", typeof(View1));

当我运行它时,此时一切正常,因为它创建了 View1 的 2 个单独实例,并在每个区域放置一个。

现在在View1 我已经声明了它自己的区域用于注入小的子视图

<ItemsControl Name="MainRegion" cal:RegionManager.RegionName="MainRegion" />

现在,当我运行我非常简单的 PRISM 应用程序时,我收到以下异常消息:

"给定名称的区域已经存在 注册:MainRegion”

这表明如果该视图声明了自己的区域,则我不能拥有同一视图的多个实例。

这样对吗?

似乎是一个巨大的限制。

我希望我的应用程序高度模块化,并让视图由其他视图(通过区域)等组成。

还是我误读了文档?

【问题讨论】:

    标签: wpf mvvm prism


    【解决方案1】:

    您可以使用 RegionScope 创建外壳级区域与由模块视图创建的区域的分隔。您创建的任何没有范围的区域都是“全局”的,并且不支持在同一范围内有两个同名的区域。

    您可以在此 MSDN 文章中阅读有关区域范围的更多信息: http://msdn.microsoft.com/en-us/magazine/cc785479.aspx#id0090126

    【讨论】:

    • 看看我的回答here,看看子视图如何获得本地范围的RegionManager(在从这些范围的孩子打开其他视图时非常有用)
    • 任何人都可以添加一个工作链接,因为上面的链接似乎已损坏。 :(
    • @HimeshSameera 我认为这是链接所指向的内容:web.archive.org/web/20150118003742/http://msdn.microsoft.com/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多