2009-05-29 2 views
0

를 인스턴스화 실버 내가프리즘 새로운보기

내가 모듈에서 "신입 사원"버튼을 가지고 있고 당신이 그것을 누를 때, 나는 신입 사원보기를 만들려는 상상 명령에 새로운 뷰를 인스턴스화 할 필요가 당신은 그것을 세 번 누르고 그것을 세 개의 요소가있는 탭으로 만들고 싶고 각 탭 페이지는 직원을위한 데이터를 포함하고 있습니다. 그런 다음 각 탭 페이지를 개별적으로 저장하거나 닫을 수 있습니다.

프리즘을 어떻게 사용합니까?

답변

2

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); 
     } 
    } 
}