2009-05-29 7 views
0

をインスタンスシルバー、私はプリズムは、新しいビュー

私はモジュールに「新入社員」ボタンを持っていて、それを押したときに、私は新しい従業員ビューを作成したいと想像コマンドに新しいビューをインスタンス化する必要があり、 3回押すと3つの要素があるタブがあり、各タブページには従業員のデータが含まれているため、各タブページを個別に保存または閉じることができます。

どのように私はプリズムでこれを行うのですか?

答えて

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); 
     } 
    } 
} 
関連する問題