0

我正在使用 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

尝试的解决方案

我已经尝试了其他堆栈中提出的解决方案,而不是犁帖子,例如这里的链接和其他帖子,但它对我不起作用。

4

2 回答 2

3

终于让它工作了。我在 ContentControl 上设置了区域管理器,该区域管理器包含我的演示者类(在我的情况下为 EmployeePage)承包商中的区域。

IRegionManager regionManager = ServiceLocator.Current.GetInstance<IRegionManager>();
regionManager.Regions.Remove("EmployeeDetailsViewRegion");
RegionManager.SetRegionManager(this.EmployeeDetailsContentControl, regionManager);
于 2012-06-14T23:48:11.053 回答
-1

尝试:

this.regionManager.RegisterViewWithRegion("EmployeeDetailsVeiwRegion",
    typeof(EmployeeDetailsView));
于 2012-06-11T14:59:49.303 回答