Задание 2. Размещение конструктора рабочих процессов
Данный раздел относится к версии Windows Workflow Foundation 4.
В этом разделе описана процедура по размещению экземпляра Конструктор рабочих процессов Windows в приложении Windows Presentation Foundation (WPF).
Процедура выполняет настройку элемента управления Сетка, который содержит конструктор, программным образом создает экземпляр WorkflowDesigner, который содержит действие Sequence по умолчанию, регистрирует метаданные конструктора, чтобы обеспечить поддержку конструктора для всех встроенных действий, и размещает Конструктор рабочих процессов в приложении WPF.
Размещение конструктора рабочих процессов
Откройте проект HostingApplication, созданный в разделе Задание 1. Создание нового приложения Windows Presentation Foundation.
Отрегулируйте размер окна, чтобы было проще использовать Конструктор рабочих процессов. Для этого выберите в конструкторе окно MainWindow, нажмите клавишу F4, чтобы открыть окноСвойства, и в разделе Макет установите свойство Ширина в значение 600, а свойство Высота — в значение 350.
Задайте имя сетки, выбрав панель Сетка в конструкторе (щелкните поле в окне MainWindow) и установив свойство Имя в верхней части окна Свойства в значение grid1.
В окне Свойства нажмите кнопку с многоточием (…) рядом со свойством ColumnDefinitions, чтобы открыть диалоговое окно Редактор коллекции.
В диалоговом окне Редактор коллекции три раза нажмите кнопку Добавить, чтобы вставить в макет три столбца. Первый столбец будет содержать Область элементов, во втором столбце будет размещен объект Конструктор рабочих процессов, и третий столбец будет использован для инспектора свойств.
Свойству
Width
среднего столбца задайте значение «4*».Нажмите кнопку ОК для сохранения изменений. Следующий код XAML будет добавлен в файл MainWindows.xaml.
<Grid Name="grid1"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="4*" /> <ColumnDefinition /> </Grid.ColumnDefinitions> </Grid>
В обозревателе решений щелкните правой кнопкой мыши файл MainWindow.xaml и выберите команду Просмотреть код. Измените код, выполнив следующие шаги.
Добавьте следующие пространства имен.
using System.Activities; using System.Activities.Core.Presentation; using System.Activities.Presentation; using System.Activities.Presentation.Metadata; using System.Activities.Presentation.Toolbox; using System.Activities.Statements; using System.ComponentModel;
Чтобы объявить закрытый член класса для хранения экземпляра WorkflowDesigner, добавьте в класс
MainWindow
следующий код.public partial class MainWindow : Window { private WorkflowDesigner wd; public MainWindow() { InitializeComponent(); } }
Добавьте следующий метод
AddDesigner
в классMainWindow
. В реализации создается экземпляр WorkflowDesigner, затем в него добавляется действие Sequence, и экземпляр помещается в средний столбец сетки grid1.private void AddDesigner() { //Create an instance of WorkflowDesigner class. this.wd = new WorkflowDesigner(); //Place the designer canvas in the middle column of the grid. Grid.SetColumn(this.wd.View, 1); //Load a new Sequence as default. this.wd.Load(new Sequence()); //Add the designer canvas to the grid. grid1.Children.Add(this.wd.View); }
Зарегистрируйте метаданные конструктора, чтобы добавить поддержку конструктора для всех встроенных действий. Это позволяет перетаскивать действия из области элементов в исходное действие Sequence в Конструктор рабочих процессов. Для этого добавьте метод
RegisterMetadata
в классMainWindow
.private void RegisterMetadata() { DesignerMetadata dm = new DesignerMetadata(); dm.Register(); }
Дополнительные сведения регистрации конструкторов действий см. в разделе Как создать настраиваемый конструктор действий.
В конструкторе класса
MainWindow
добавьте вызовы объявленных ранее методов для регистрации метаданных для поддержки конструктора и создания WorkflowDesigner.public MainWindow() { InitializeComponent(); // Register the metadata RegisterMetadata(); // Add the WFF Designer AddDesigner(); }
Примечание Метод RegisterMetadata
регистрирует метаданные конструктора встроенных действий, включая действие Sequence. Поскольку методAddDesigner
использует действие Sequence, сначала необходимо вызвать методRegisterMetadata
.
Нажмите клавишу F5 для построения и выполнения решения.
Инструкции по добавлению поддержки Области элементов и PropertyGrid для вновь размещенного конструктора рабочих процессов см. в разделе Задание 3. Создание области элементов и сетки свойств.
См. также
Задачи
Задание 1. Создание нового приложения Windows Presentation Foundation
Задание 3. Создание области элементов и сетки свойств