本文介绍了RegionManger 未加载的区域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

in a prism 6 based application, this is a part of my shell, and QuickAccessToolBar region defined like this:

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

RegionManger 不会加载区域,

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

and when will replace the definition above(just for demo purposes) by this :

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

RegionManager 加载区域!

The RegionManager loads the region!

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

my question is:
what's Wrong in my XAML ? my be the region was defined inside a complex property?Can you guide me, thanks in advance.best regards.

非常好的回答布赖恩,它就像一个魅力,正如布莱恩所说:

Very good answer Brian, it works like a charm, as Brian said:

  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 是统一容器解析的 RegionManager

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

Thank you very much Brian, good night :)

推荐答案

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

My guess is that the QuickAccessTolbar is not part of the visual tree, so the region manager can't find it. Since this is a Telerik control, I am not aware of how they architected their control. You might have to do this in code behind instead.

首先设置区域名称,然后使用附加属性设置区域管理器.

First set the region name, then set the RegionManager using the attached properties.

RegionManager.SetRegionName(quickToolbar, name);

RegionManager.SetRegionName(quickToolbar, name);

RegionManager.SetRegionManager(quickToolbar, rm);

RegionManager.SetRegionManager(quickToolbar, rm);

这篇关于RegionManger 未加载的区域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-25 19:39