【发布时间】:2010-12-03 23:38:08
【问题描述】:
我有一个基于 Prism 2009 年 2 月版本的 WPF 项目设置为:
Shell 将单个 ContentControl 公开为“MainRegion” 在名为 SplitView 的基础结构项目中定义的另一个视图(用户控件)公开了两个附加区域“LeftRegion”和“RightRegion”,也作为 ContentControl。
我的应用程序的一些模块需要在 MainRegion(一个用户控件)中显示它们的视图,而另一些需要在 LeftRegion 和 RightRegion 中显示它们的视图(两个用户控件以拆分方式)。
我尝试过使用作用域区域,假设特定的控制器将持有对作用域区域的引用。所以基本上每个对 SplitView 功能感兴趣的控制器都应该实例化一个新的 SplitView(用户控件)并在 MainRegion 中激活它,同时在新创建的 scoped SplitView 区域的 LeftRegion 和 RightRegion 中激活它的两个用户控件。
我正在使用带有视图注入的 MVVM 来显示视图。
不用说,这种方法出现了严重错误。
在运行时我得到这个异常,“创建一个名为'LeftRegion'的区域时发生异常。异常是:System.InvalidOperationException:指定元素已经是另一个元素的逻辑子元素。先断开它。”
我是否正确地假设每次我实例化 SplitView 时 LeftRegion 和 RightRegion 都在尝试向主 RegionManager 注册自己?
对于令人困惑/冗长的帖子,我们深表歉意。有什么建议?实现这一目标的最佳做法?
提前致谢,
阿里
【问题讨论】:
-
我认为您将不得不在那里发布一些代码。我已经重读了几次你的帖子,但我不是 100% 了解你想要做什么。
-
Anderson,基本上我要做的是多次实例化一个视图(SplitView),并且该视图定义了自己的区域(两个 ContentControl 区域,名为“LeftRegion”和“RightRegion”)。如果还不清楚,我可以发布一些代码。谢谢。