0
をインスタンスシルバー、私はプリズムは、新しいビュー
私はモジュールに「新入社員」ボタンを持っていて、それを押したときに、私は新しい従業員ビューを作成したいと想像コマンドに新しいビューをインスタンス化する必要があり、 3回押すと3つの要素があるタブがあり、各タブページには従業員のデータが含まれているため、各タブページを個別に保存または閉じることができます。
どのように私はプリズムでこれを行うのですか?
をインスタンスシルバー、私はプリズムは、新しいビュー
私はモジュールに「新入社員」ボタンを持っていて、それを押したときに、私は新しい従業員ビューを作成したいと想像コマンドに新しいビューをインスタンス化する必要があり、 3回押すと3つの要素があるタブがあり、各タブページには従業員のデータが含まれているため、各タブページを個別に保存または閉じることができます。
どのように私はプリズムでこれを行うのですか?
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);
}
}
}