Принудительное обновление WorkflowView при добавлении нового дочернего действия - PullRequest
1 голос
/ 22 января 2010

Мое приложение использует конструктор рабочих процессов, позволяющий конечным пользователям разрабатывать рабочие процессы. У меня есть активность, которая требует, чтобы пользователь установил некоторое состояние. Для этого в конструкторе я переопределяю Initialize (Activity) и показываю форму, которую затем использую для установки значений в моей Activity. Это для установки состояния при первоначальном добавлении Действия. У меня также есть обработчик событий двойного щелчка в конструкторе на случай, если им нужно будет отредактировать это состояние позже.

Теперь у меня есть ситуация, когда в зависимости от значений в форме мне может понадобиться добавить или удалить дочернее действие. Мне удалось добавить это задание, но не всегда оно было показано в конструкторе.

Когда вызывается Initialize, дочерние действия отсутствуют. Возможно, мне нужно добавить дочернюю активность. На данный момент он работает нормально и отображается в конструкторе. Проблема возникает, когда они редактируют его позже, дважды щелкнув. В моем конструкторе я переопределяю OnActivityChanged, чтобы обнаружить это. Я делаю тот же звонок, чтобы добавить ребенка, но дизайнер не обновляется. Как ни странно, когда ситуация такова, что дочерний элемент удаляется, представление обновляется нормально.

Выполнение отладчика показывает, что я добавляю дочернее действие в коллекцию Activity. Обычно, когда у меня возникают проблемы с обновлением представления, я могу вызвать IComponentChangeService.OnComponentChanged, но не могу найти способ заставить это работать.

Есть предложения?

Похоже, мне нужно было использовать RemoveActivities и InsertActivities в конструкторе. Похоже, что дизайнер не слушает события изменения списка в списке действий. Кто-нибудь знает, так ли это должно работать?

Ответы [ 2 ]

0 голосов
/ 28 января 2010

В моей ситуации я решил, что мне нужно использовать RemoveActivities и InsertActivities.

0 голосов
/ 26 января 2010

Вы пробовали это в своем обработчике события OnActivityChanged?

TypeDescriptor.Refresh(e.Activity);
...