ViewInjectionComposition QuickStart는 찾고있는 것을 보여주는 훌륭한 예입니다.
명령을 컨트롤러에 위임하면 범위 관리자 영역을 영역 관리자 밖으로 가져옵니다. 범위가 지정된 영역이 있으면 새보기를 해결하고 영역에 추가합니다.
다음은 찾고자하는 것을하기 위해 쉽게 수정할 수있는 빠른 시작의 스 니펫입니다.
public class EmployeesController : IEmployeesController
{
private IUnityContainer container;
private IRegionManager regionManager;
public EmployeesController(IUnityContainer container, IRegionManager regionManager)
{
this.container = container;
this.regionManager = regionManager;
}
public virtual void OnEmployeeSelected(BusinessEntities.Employee employee)
{
IRegion detailsRegion = regionManager.Regions[RegionNames.DetailsRegion];
object existingView = detailsRegion.GetView(employee.EmployeeId.ToString(CultureInfo.InvariantCulture));
if (existingView == null)
{
IProjectsListPresenter projectsListPresenter = this.container.Resolve<IProjectsListPresenter>();
projectsListPresenter.SetProjects(employee.EmployeeId);
IEmployeesDetailsPresenter detailsPresenter = this.container.Resolve<IEmployeesDetailsPresenter>();
detailsPresenter.SetSelectedEmployee(employee);
IRegionManager detailsRegionManager = detailsRegion.Add(detailsPresenter.View, employee.EmployeeId.ToString(CultureInfo.InvariantCulture), true);
IRegion region = detailsRegionManager.Regions[RegionNames.TabRegion];
region.Add(projectsListPresenter.View, "CurrentProjectsView");
detailsRegion.Activate(detailsPresenter.View);
}
else
{
detailsRegion.Activate(existingView);
}
}
}