private void EditTemplateAction_Execute(object sender, SimpleActionExecuteEventArgs e) { Doctor doctor = ObjectSpace.GetObject(SecuritySystem.CurrentUser as Doctor); if (doctor != null) { var listView = View as ListView; if (listView != null) { // получаем тип объектов списка var type = listView.ObjectTypeInfo.Type; // динамическая выборка по типу объекта MethodInfo method = typeof(Enumerable).GetMethod("OfType"); MethodInfo generic = method.MakeGenericMethod(new Type[] { type }); var templates = (IEnumerable <TextTemplate>)generic.Invoke(null, new object[] { doctor.TextTemplates }); // создаем объект для отображения в окне редактирования var templateField = new TextTemplateEditParameters() { EditTemplates = templates.ToList(), TemplateType = type }; // отображаем окно ShowView((ActionBase)sender, templateField); } } }
private void ShowView(ActionBase action, TextTemplateEditParameters templateField) { ShowViewParameters svp = new ShowViewParameters(); var os = Application.CreateObjectSpace(); DetailView dv = Application.CreateDetailView(os, templateField); svp.CreatedView = dv; svp.TargetWindow = TargetWindow.NewModalWindow; DialogController dc = new DialogController(); dc.Accepting += DcOnAccepting; dc.CancelAction.Caption = "Отмена"; svp.Controllers.Add(dc); Application.ShowViewStrategy.ShowView(svp, new ShowViewSource(null, action)); }