【发布时间】:2012-06-15 07:48:11
【问题描述】:
我正在使用 prism 4 框架开发 WPF 桌面应用程序。在我的应用程序中,我显示了一个员工列表,当从列表中选择一个时,所选员工的详细信息显示在详细信息区域中。在用于响应员工选择事件的控制器中,我有以下代码用于注入 EmployeeDetailsVeiw。
IRegion employeeDetailsVeiwRegion = this.regionManager.Regions["EmployeeDetailsVeiwRegion"];
EmployeeDetailsView view = employeeDetailsVeiwRegion.GetView("EmployeeDetailsVeiw") as EmployeeDetailsView;
if(view == null)
{
view = this.container.Resolve<EmployeeDetailsView>();
employeeDetailsVeiwRegion.Add(view, "EmployeeDetailsVeiw");
}
我已将区域定义为
<ContentControl Name="EmployeeDetailsVeiwRegion" Margin="16" Grid.Row="1"
prism:RegionManager.RegionName="EmployeeDetailsVeiwRegion"/>
但是当我运行代码时,我不断收到错误
The region manager does not contain the EmployeeDetailsVeiwRegion region
尝试的解决方案
我已经尝试过其他堆栈中提出的解决方案,例如这里 a link 和其他帖子,但它不适用于我。
【问题讨论】:
-
你能在所有地方检查你的EmployeeDetailsVeiwRegion的拼写吗?您将
View拼写为Veiw。一个简单的错字(即使是错误的大小写)都会导致它失败。 -
我过去曾遇到过这个错误。造成这种情况的原因是我在代码的不同部分有不同的区域管理器实例。
-
@HiTech Magic 是的,我检查了拼写错误,他们不是问题
-
@Gus 如何使区域管理器在代码的不同部分中成为同一个实例
-
您是否使用统一来确保您只创建了一个 RegionManager 实例?此外,您应该在获取区域之前验证视图是否已创建,因为 RegionManager 不会知道该区域。从您的代码看来,您尝试在创建视图之前先获取该区域。