我正在使用MEF创建一个新的Prism4应用程序,它运行良好。我已经创建了Shell等,一切都很好。
但现在我需要创建一个新的 Window ,其中包含 Region ,但似乎该区域未注册 RegionManager (参见Window_Closing事件),窗口中的Region工作正常,因为显示了注入的视图。
这是新窗口的代码
Wizard.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区域。”
Wizard.xaml.cs
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
object asdf = regionManager.Regions["WizardStepsRegion"];
}
为什么该区域未在区域经理中注册?
有人可以帮助我吗?
谢谢。
答案 0 :(得分:0)
听起来你正在尝试创建一个对话框。您是导入该对话框还是使用new Wizard()
创建该对话框?如果您使用new
运算符创建它,RegionManager将不会知道任何相关信息。您可以使用SetRegionManager手动告诉RegionManager窗口。
RegionManager.SetRegionManager(window, myRegionManager);
然后RegionManager将了解您的所有类型,发现其区域等。另一个选项是导入向导类型,只需要.Show()
它,但有时这是不切实际的。