Задача 2. Размещение конструктора рабочих процессов
В этом разделе описывается процедура размещения экземпляра Designer рабочего процесса Windows в приложении Windows Presentation Foundation (WPF).
Процедура настраивает элемент управления Grid, содержащий конструктор, программно создает экземпляр WorkflowDesigner класса , содержащий действие по умолчаниюSequence, регистрирует метаданные конструктора для предоставления поддержки конструктора для всех встроенных действий и размещает Designer рабочего процесса в приложении WPF.
Размещение конструктора рабочих процессов
Откройте проект HostingApplication, созданный в разделе Задача 1. Создание нового приложения Windows Presentation Foundation.
Измените размер окна, чтобы упростить использование Designer рабочего процесса. Для этого выберите MainWindow в конструкторе, нажмите клавишу F4, чтобы открыть окно Свойства , и в разделе Макет установите для параметра Ширина значение 600, а для параметра Высота — значение 350.
Задайте имя сетки, выбрав панель Сетка в конструкторе (щелкните поле в MainWindow) и присвоив свойству Имя в верхней части окна Свойства значение grid1.
В окне Свойства щелкните многоточие (...) рядом со свойством
ColumnDefinitions
, чтобы открыть диалоговое окно Редактор коллекций .В диалоговом окне Редактор коллекций нажмите кнопку Добавить три раза, чтобы вставить три столбца в макет. Первый столбец будет содержать панель элементов, во втором — Designer рабочего процесса, а третий столбец будет использоваться для инспектора свойств.
Присвойте свойству
Width
среднего столбца значение "4*".Нажмите кнопку OK, чтобы сохранить изменения. Следующий код XAML добавляется в файл MainWindow.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(); } }
Добавьте в класс
MainWindow
методAddDesigner
. Реализация создает экземпляр WorkflowDesigner, добавляет Sequence к нему действие и помещает его в средний столбец grid1 Grid.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 действие в Designer рабочего процесса. Для этого добавьте
RegisterMetadata
метод вMainWindow
класс :private void RegisterMetadata() { var dm = new DesignerMetadata(); dm.Register(); }
Дополнительные сведения о регистрации конструкторов действий см. в разделе How to: Create a Custom Activity Designer.
В конструкторе класса
MainWindow
добавьте вызовы объявленных ранее методов для регистрации метаданных для поддержки конструктора и создания WorkflowDesigner.public MainWindow() { InitializeComponent(); // Register the metadata. RegisterMetadata(); // Add the WFF Designer. AddDesigner(); }
Нажмите клавишу F5 , чтобы выполнить сборку и запустить решение.
Сведения о том, как добавить поддержку панели элементов и PropertyGrid в конструктор рабочих процессов, см. в разделе Задача 3. Создание панелей элементов и областей propertyGrid.