我无法使用Prism使ContentControl成为区域

时间:2018-12-29 10:51:04

标签: c# wpf prism mahapps.metro region

我正在构建一个棱镜应用程序,并使用MahApps的hamburgermenu设置了外壳。在该Hamburgermenu的内容中,我希望有一个区域。

但是当我尝试使用“ Hamburgermenu.Content”中的ContentControl制作区域时,不会添加该区域。 但是,如果我尝试使用Hamburgermenu控件以外的ContentControl来制作区域,则效果很好。

<route id="bar">
    <from uri="mqtt"/>
    <to uri="TranslateMQTT2MyModel"/>
    <to uri="seda:processAndReply"/>
</route>

<route id="out">
    <from uri="seda:processAndReply" />
    <to uri="ProcessData"/>
    <to uri="TranslateMyModel2MQTT"/>
    <to uri="mqtt"/>
</route>

由于在汉堡菜单中未添加区域,因此导航无法正常工作。有人知道我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

附加属性(RegionManager.RegionName)仅适用于立即创建的控件。由于区域管理器已完成查找区域的操作,因此不会检测到延迟创建的控件。

您需要在(构造函数)后面的菜单代码中手动添加区域,如下所示:

RegionManager.SetRegionName( theNameOfTheContentControlInsideTheMenu, WellKnownRegionNames.MenuRegion );
RegionManager.SetRegionManager( theNameOfTheContentControlInsideTheMenu, theRegionManager );

您必须为托管该区域的内容控件分配一个名称,并以某种方式获取区域管理器(ServiceLocator.Current.GetInstance<IRegionManager>())。