在 RegionManager 中找不到区域(使用 PRISM)

发布于 2024-08-19 18:40:57 字数 614 浏览 9 评论 0原文

我正在 Prism 中编写一个应用程序。我有一个用户控件,包含两个 控件。它们都分配有区域。用户控件托管在使用 ShowDialog() 显示的 Window 中。
我正在使用视图发现将我的一个视图添加到一个区域,而另一个我想将视图注入到其区域中。视图发现工作正常。但是,当我尝试引用其他区域来注入视图时,我收到异常:

KeyNotFoundException
区域管理器不包含MyRegion区域。

当我查看 RegionManagers 区域时,我尝试注入视图的区域或正在使用视图发现的区域都不存在。

我与 Shell 位于不同的窗口中,这有什么关系吗?我以为只有一个 RegionManager,但必须有两个才能让我的视图发现仍然工作......?或者是因为我在应用程序生命周期的后期创建了两个新区域?或者是因为新区域不在我的 MainRegion 内?

编辑:
经过一番挖掘后,看起来 Region 已创建,但找不到 RegionManager 的实例,因此未添加它。有什么线索吗?

I'm writing an application in Prism. I have a user control and contains two <ContentControl> controls. These both have Regions assigned to them. The usercontrol is being hosted in a Window that is being shown using ShowDialog().
I'm adding the one of my views to a region using view discovery and the other I want to inject the view into its region. The view discovery works fine. However when I try and reference the other region to inject the view I get the exception:

KeyNotFoundException
The region manager does not contain the MyRegion region.

When I look in the RegionManagers regions neither the one that I'm trying to inject the view exists or the one being that's using view discovery.

Does it matter that I'm in a different window to the Shell? I thought there was only one RegionManager, but there must be two for my view discovery to still be working...? Or is it because I have two new regions being created later in the applications life cycle? Or is it because the new regions aren't inside the my MainRegion?

EDIT:
After doing some digging it looks like the Region is created but it can't find an instance of the RegionManager so it doesn't get added. Any clues?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

滴情不沾 2024-08-26 18:40:57

现在排序了。我需要在演示者类的构造函数中注册区域管理器。
这样我的新窗口中的区域就可以找到我的全球区域经理。

RegionManager.SetRegionManager(查看为DependencyObject,regionManager);

Sorted now. I needed to register the region manager in the constructor of my presenter class.
That way the regions in my new window could find my global region manager.

RegionManager.SetRegionManager(view as DependencyObject, regionManager);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文