2009-05-29 39 views
0

我需要實例化一個命令一個新的觀點棱鏡Silverlight的實例化一個新的觀點

想象我有一個「新員工」按鈕,在一個模塊中,當你按下它,我想創建一個新的員工看來,你按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); 
     } 
    } 
}