0
我需要实例化一个命令一个新的观点棱镜Silverlight的实例化一个新的观点
想象我有一个“新员工”按钮,在一个模块中,当你按下它,我想创建一个新的员工看来,你按3次,我想要一个包含三个元素的标签,每个标签页包含一个员工的数据,然后你可以分别保存和/或关闭每个标签页。
我该如何与棱镜做到这一点?
我需要实例化一个命令一个新的观点棱镜Silverlight的实例化一个新的观点
想象我有一个“新员工”按钮,在一个模块中,当你按下它,我想创建一个新的员工看来,你按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);
}
}
}