我正在用MEF创建一个新的Prism4应用程序,它工作得很好。我已经创建了Shell等,一切正常。

但是现在我需要创建一个新窗口,其中包含一个Region,但是似乎该区域未在RegionManager中注册(请参见Window_Closing事件),并且该窗口中的Region运行良好,因为显示了注入其中的视图。

这是新窗口的代码

向导

<DockPanel LastChildFill="True">
  <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" DockPanel.Dock="Bottom">
    <Button Content="_Previous" Margin="0, 0, 10, 0" />
    <Button Content="_Next" />
  </StackPanel>
  <ContentControl cal:RegionManager.RegionName="WizardStepsRegion" />
</DockPanel>


当我尝试获取窗口的Region时,出现以下异常“用户代码未处理KeyNotFoundException”,“ Region Manager不包含WizardStepsRegion区域”。

Wizard.xaml.cs

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
  object asdf = regionManager.Regions["WizardStepsRegion"];
}


为什么区域未在区域管理器中注册?

有人能帮我吗?

谢谢。

最佳答案

听起来您正在尝试创建对话框。您要导入该对话框还是使用new Wizard()创建它?如果使用new运算符创建它,RegionManager对此一无所知。您可以使用SetRegionManager手动告诉RegionManager有关窗口的信息。

RegionManager.SetRegionManager(window, myRegionManager);


然后,RegionManager会知道有关您的类型的所有信息,发现其区域等。另一个选项是导入向导类型,并在需要时仅.Show()导入它,但这有时是不切实际的。

关于c# - Microsoft Prism应用程序需要的帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6439771/

10-11 19:44