Пользовательские разработчики действия в Основе Рабочего процесса 3.5: Как они работают?

Намерение этого сообщения:

Я понимаю, что Основа Рабочего процесса не чрезвычайно популярна на StackOverflow и что, вероятно, будет не много ответов или ни один вообще. Это сообщение предназначается как ресурс людям, пытающимся настроить появление операций рабочего процесса через пользовательские классы разработчика.


Цели:

Я пытаюсь создать пользовательский класс разработчика для операций Рабочего процесса для достижения следующего:

  1. Заставьте операции выглядеть менее техническими. Например, я не обязательно хочу рассматривать внутреннее имя объекта как "заголовок" действия - вместо этого, я хотел бы видеть что-то более описательное.

  2. Отобразите значения определенных свойств под текстом заголовка. Я хотел бы видеть значения некоторых свойств непосредственно под заголовком так, чтобы я не должен был смотреть где-то в другом месте (а именно, в Окне свойств).

  3. Обеспечьте пользовательские области отбрасывания и привлеките пользовательские внутренние стрелки. Как пример, я хотел бы смочь иметь пользовательские области отбрасывания в очень определенных местах.


Что я узнал до сих пор:

Я создал пользовательский класс разработчика, происходящий из SequentialActivityDesigner следующим образом:

[Designer(typeof(SomeDesigner))]
public partial class SomeActivity: CompositeActivity
{
    ...
}

class PlainDesigner : SequentialActivityDesigner
{
    ...
}

Посредством переопределения некоторых свойств и OnPaint метод, я узнал о следующих корреспонденциях между свойствами и как действие будет отображено:

Diagram showing the relationships between some properties of a SequentialActivityDesigner and the displayed activity.
Рисунок 1. Отношения между некоторыми свойствами SequentialActivityDesigner и отображенное действие.

Возможные решения для цели № 1 (заставляют операции выглядеть менее техническими), и цель № 2 (значения дисплея свойств под текстом заголовка):

  • Отображенный заголовок может быть изменен через Title свойство.

  • Если больше комнаты обязано отображать дополнительную информацию под заголовком, TitleHeight свойство может быть увеличено (т.е., переопределить свойство и заставлять его возвратиться base.TitleHeight + n, где n некоторое положительное целое число).

  • Переопределите OnPaint метод и рисует дополнительный текст в области, зарезервированной через TitleHeight.


Нерешенные вопросы:

  • Для чего коннекторы, соединения и точки подключения, используемые? Они, кажется, необходимы, но для какой цель?

  • В то время как через цели отбрасывания можно пройти GetDropTargets метод, кажется, что это не обязательно, куда разработчик на самом деле поместит отброшенные операции. Когда действие перетаскивается через рабочий процесс, разработчик отображает небольшие зеленые знаки "плюс", где операции могут быть отброшены; как это выясняет местоположения этих знаков "плюс"?

  • Как разработчик выясняет, где провести линии коннектора и стрелки?

1
задан 2 revs, 2 users 98% 24 July 2019 в 09:09
поделиться

1 ответ

Если у вас нет очень, очень веской причины вливать огромные количества (а это будет массивным ) в WF 3.5, то не делайте этого. Вместо этого используйте WF4. WF4 дает гораздо больше контроля над внешним видом действий, отображаемых с помощью Xaml с помощью WPF.

WF 3.5 был очень техническим и очень страшным для пользователя. WF4 предназначен для решения этих проблем, и это, похоже, соответствует вашим целям.

2
ответ дан 3 September 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: