gpt4 book ai didi

MVVM Prism 嵌套区域找不到子区域

转载 作者:行者123 更新时间:2023-12-03 10:18:53 25 4
gpt4 key购买 nike

我有一个菜单(Telerik RadMenu),它在 Shell 中定义了嵌套区域。在我的模块中,我将使用这些区域注册模块菜单或工具栏项。根区域一切正常,但是当我尝试向子区域添加某些内容时,例如菜单上的文件区域,我收到错误消息“异常消息是:区域管理器不包含 FileMenuRegion 区域。”

但是就像我说的,如果我更改此代码

regionManager.Regions[RegionNames.FileMenuRegion].Add(menuItem);

对此
regionManager.Regions[RegionNames.MainMenuRegion].Add(menuItem);

一切正常。下面是我的菜单的 XAML,因此您可以看到区域名称以及它们的构造方式。任何帮助将不胜感激,因为这令人困惑并使我发疯。

菜单
    <telerikNavigation:RadMenu x:Name="menuMain" DockPanel.Dock="Top" prismrgn:RegionManager.RegionName="{x:Static i:RegionNames.MainMenuRegion}" telerik:StyleManager.Theme="{Binding Source={StaticResource settings}, Path=Default.CurrentTheme}">
<telerikNavigation:RadMenuItem Header="{x:Static p:Resources.File}" prismrgn:RegionManager.RegionName="{x:Static i:RegionNames.FileMenuRegion}">
<telerikNavigation:RadMenuItem Header="{x:Static p:Resources.Exit}" Command="{Binding ExitCommand}">
<telerikNavigation:RadMenuItem.Icon>
<Image Source="../Resources/Close.png" Stretch="None" />
</telerikNavigation:RadMenuItem.Icon>
</telerikNavigation:RadMenuItem>
</telerikNavigation:RadMenuItem>
</telerikNavigation:RadMenu>

最佳答案

上述 XAML 违背了 PRISM 区域的设计。

所有区域都应该附加到从 ContentControl 派生的控件。加载区域注册 View 的过程将区域容器的内容替换为为该区域名称注册的任何匹配 View 。这将删除您的嵌套区域名称,因此您看到的错误是正确的。

这个想法是,为指定区域名称注册的 View 本身可以包含其他区域。

关于MVVM Prism 嵌套区域找不到子区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2523823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com