Я понимаю, что Основа Рабочего процесса не чрезвычайно популярна на StackOverflow и что, вероятно, будет не много ответов или ни один вообще. Это сообщение предназначается как ресурс людям, пытающимся настроить появление операций рабочего процесса через пользовательские классы разработчика.
Я пытаюсь создать пользовательский класс разработчика для операций Рабочего процесса для достижения следующего:
Заставьте операции выглядеть менее техническими. Например, я не обязательно хочу рассматривать внутреннее имя объекта как "заголовок" действия - вместо этого, я хотел бы видеть что-то более описательное.
Отобразите значения определенных свойств под текстом заголовка. Я хотел бы видеть значения некоторых свойств непосредственно под заголовком так, чтобы я не должен был смотреть где-то в другом месте (а именно, в Окне свойств).
Обеспечьте пользовательские области отбрасывания и привлеките пользовательские внутренние стрелки. Как пример, я хотел бы смочь иметь пользовательские области отбрасывания в очень определенных местах.
Я создал пользовательский класс разработчика, происходящий из SequentialActivityDesigner
следующим образом:
[Designer(typeof(SomeDesigner))]
public partial class SomeActivity: CompositeActivity
{
...
}
class PlainDesigner : SequentialActivityDesigner
{
...
}
Посредством переопределения некоторых свойств и OnPaint
метод, я узнал о следующих корреспонденциях между свойствами и как действие будет отображено:
Рисунок 1. Отношения между некоторыми свойствами SequentialActivityDesigner
и отображенное действие.
Возможные решения для цели № 1 (заставляют операции выглядеть менее техническими), и цель № 2 (значения дисплея свойств под текстом заголовка):
Отображенный заголовок может быть изменен через Title
свойство.
Если больше комнаты обязано отображать дополнительную информацию под заголовком, TitleHeight
свойство может быть увеличено (т.е., переопределить свойство и заставлять его возвратиться base.TitleHeight + n
, где n
некоторое положительное целое число).
Переопределите OnPaint
метод и рисует дополнительный текст в области, зарезервированной через TitleHeight
.
Для чего коннекторы, соединения и точки подключения, используемые? Они, кажется, необходимы, но для какой цель?
В то время как через цели отбрасывания можно пройти GetDropTargets
метод, кажется, что это не обязательно, куда разработчик на самом деле поместит отброшенные операции. Когда действие перетаскивается через рабочий процесс, разработчик отображает небольшие зеленые знаки "плюс", где операции могут быть отброшены; как это выясняет местоположения этих знаков "плюс"?
Как разработчик выясняет, где провести линии коннектора и стрелки?
Если у вас нет очень, очень веской причины вливать огромные количества (а это будет массивным ) в WF 3.5, то не делайте этого. Вместо этого используйте WF4. WF4 дает гораздо больше контроля над внешним видом действий, отображаемых с помощью Xaml с помощью WPF.
WF 3.5 был очень техническим и очень страшным для пользователя. WF4 предназначен для решения этих проблем, и это, похоже, соответствует вашим целям.