public virtual void DoProcessPairAction(String Action, String Param) { switch (Action) { case "View": IObjectSpace os = null; var obj = GetObjectByKey(Param); var svp = new ShowViewParameters(); if (collection is PropertyCollectionSource) { os = collection.ObjectSpace.CreateNestedObjectSpace(); svp.TargetWindow = TargetWindow.NewModalWindow; } else { os = App.CreateObjectSpace(obj.GetType()); svp.TargetWindow = TargetWindow.Default; } obj = os.GetObject(obj); DetailView view = App.CreateDetailView(os, ListView.DetailView, true, obj); view.ViewEditMode = EditMode; svp.CreatedView = view; App.ShowViewStrategy.ShowView(svp, new ShowViewSource(null, null)); break; case "Mark": string[] marks = String.Concat(Param).Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); foreach (var mark in marks) { if (MarkedObjects.IndexOf(mark) == -1) { MarkedObjects.Add(mark); } else { MarkedObjects.Remove(mark); } } control.Refresh(); CalcSelectedObjects(); OnSelectionChanged(); break; } }