2009-05-29 20 views
0

instanziiert Silver Ich brauche einen neuen Blick auf einen Befehl instanziiertPrisma eine neue Ansicht

Stellen Ich habe einen „neuen Mitarbeiter“ in einem Modul und wenn man sie drückt, möchte ich einen neuen Mitarbeiter Ansicht erstellen, Sie drücken es dreimal und ich möchte eine Registerkarte mit drei Elementen darin haben und jede Registerkarte enthält Daten für einen Mitarbeiter, dann können Sie jede Registerkarte separat speichern und/oder schließen.

Wie mache ich das mit Prism?

Antwort

2

Der ViewInjectionComposition QuickStart ist ein großartiges Beispiel dafür, was Sie suchen.

Was Sie tun, ist einen Befehl an einen Controller zu delegieren, erhalten Sie Ihre Reichweite Region Manager aus. Sobald Sie den Bereich für den Gültigkeitsbereich festgelegt haben, beheben Sie eine neue Ansicht, und fügen Sie sie zur Region hinzu.

Hier ist ein Auszug aus dem Schnellstart, den Sie leicht ändern können, um das zu tun, wonach Sie suchen.

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