Получить WorkflowDesigner из ModelItem - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь создать пользовательский IExpressionEditor.Для создания нового мне нужен WorkflowDesigner. Все, что у меня есть, это ModelItem, представляющий мое пользовательское действие.Можно ли получить доступ к WorkflowDesigner из данного ModelItem?

   List<ModelItem> variables = new List<ModelItem>();
   List<ModelItem> nameSpaces = new List<ModelItem>();

   // get the activity from the datacontext
   CustomActivityDesigner cad = this.DataContext as CustomActivityDesigner;
   // try to get the variables
   // look for variables collection cant seem to find them
   ModelProperty mp = cad.ModelItem.Properties["Variables"];

   if(mp != null && mp.PropertyType == typeof(Collection<Variable>))
   {
        mp.Collection.ToList().ForEach(i => variables.Add(i));
   }

   // get name spaces
   ModelProperty mp2 = cad.ModelItem.Properties["NameSpaces"];

   if(mp2 != null && mp2.PropertyType == typeof(Collection<NameSpace>))
   {
        mp2.Collection.ToList().ForEach(i => nameSpaces.Add(i));
   } 

   // finally need the WorkflowDesigner object
   WorkflowDesigner designer = Modelitem.Root....??? as WorkflowDesigner

   // now we have what we need we can create the IExpressionEditor
   CustomExpressionEditior ce = new CustomExpressionEditior(designer, variables, nameSpaces)

1 Ответ

0 голосов
/ 22 ноября 2018

После Использование редактора пользовательских выражений в качестве справки, похоже, вы сможете создать Службу пользовательских выражений (которая будет создавать Редактор выражений экземпляры) и зарегистрируйте его в коллекции Services на WorkflowDesigner .

Как только он будет зарегистрирован в коллекции WorkflowDesigner Services, вы сможете:

  • Получите контекст редактирования для ModelItem , используя ModelItemExtensions.GetEditingContext
  • Доступ к свойству Services возвращенного EditingContext
  • Получите Службу пользовательских выражений , которую вы зарегистрировали в WorkflowDesginer

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...