Microsoft Prism应用程序所需的帮助

本文关键字:帮助 Prism 应用程序 Microsoft | 更新日期: 2023-09-27 17:59:50

我正在用MEF创建一个新的Prism 4应用程序,它运行得很好。我已经创建了Shell等,一切都很好。

但现在我需要创建一个新的窗口,其中有一个区域但该区域似乎没有在RegionManager中注册(请参阅Window_Closing事件),并且窗口中的区域工作良好,因为注入到其中的视图已显示。

这是新窗口的代码

向导.xaml

<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未被用户代码处理","区域管理器不包含WizardStepsRegion区域。"

向导.xaml.cs

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

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

有人能帮我吗?

谢谢。

Microsoft Prism应用程序所需的帮助

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

RegionManager.SetRegionManager(window, myRegionManager);

然后RegionManager将了解您的所有类型,发现其区域等。另一种选择是导入向导类型,并在您需要时仅.Show()它,但有时这并不实用。