RegionManger 未加载区域

Region not loaded by the RegionManger

在基于 Prism 6 的应用程序中, 这是我的 shell 和 QuickAccessToolBar 区域的一部分,定义如下:

<telerik:RadRibbonView>
        <telerik:RadRibbonView.QuickAccessToolBar>
            <telerik:QuickAccessToolBar prism:RegionManager.RegionName="{x:Static inf:RegionNames.QuickAccessToolBarRegion}"/>
        </telerik:RadRibbonView.QuickAccessToolBar>

RegionManger不会加载区域,

什么时候用这个替换上面的定义(仅用于演示目的):

<telerik:RadRibbonView >
        <ContentControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.QuickAccessToolBarRegion}"/>

RegionManager 加载区域!

我的问题是:
我的 XAML 怎么了?我的区域是在复杂的 属性 中定义的吗? 你能指导我吗, 提前致谢。 最好的问候。

解法:

布赖恩的回答非常好,它很有魅力, 正如 Brian 所说:

  1. 首先我们命名目标元素:
<telerik:RadRibbonView.QuickAccessToolBar>
    <telerik:QuickAccessToolBar x:Name="QuickAccessToolBar"/>
</telerik:RadRibbonView.QuickAccessToolBar>
  1. 在后面的代码中(在我的例子中是 Shell):
public Shell(ShellViewModel viewModel, IRegionManager regionManager)
{ 
 InitializeComponent();
 DataContext = viewModel;
 RegionManager.SetRegionName(QuickAccessToolBar,RegionNames.QuickAccessToolBarRegion);
 RegionManager.SetRegionManager(QuickAccessToolBar, regionManager);
}

其中RegionNames.QuickAccessToolBarRegion="QuickAccessToolBarRegion"和regionManager是unity容器解析的RegionManager

非常感谢布莱恩,晚安:)

我的猜测是 QuickAccessTolbar 不是可视化树的一部分,因此区域管理器找不到它。由于这是一个 Telerik 控件,我不知道他们是如何构建控件的。您可能必须在代码隐藏中执行此操作。

首先设置区域名称,然后使用附加属性设置 RegionManager。

RegionManager.SetRegionName(quickToolbar, 名称);

RegionManager.SetRegionManager(quickToolbar, rm);