Поделиться через


Задача 2. Размещение конструктора рабочих процессов

В этом разделе описывается процедура размещения экземпляра Designer рабочего процесса Windows в приложении Windows Presentation Foundation (WPF).

Процедура настраивает элемент управления Grid, содержащий конструктор, программно создает экземпляр WorkflowDesigner класса , содержащий действие по умолчаниюSequence, регистрирует метаданные конструктора для предоставления поддержки конструктора для всех встроенных действий и размещает Designer рабочего процесса в приложении WPF.

Размещение конструктора рабочих процессов

  1. Откройте проект HostingApplication, созданный в разделе Задача 1. Создание нового приложения Windows Presentation Foundation.

  2. Измените размер окна, чтобы упростить использование Designer рабочего процесса. Для этого выберите MainWindow в конструкторе, нажмите клавишу F4, чтобы открыть окно Свойства , и в разделе Макет установите для параметра Ширина значение 600, а для параметра Высота — значение 350.

  3. Задайте имя сетки, выбрав панель Сетка в конструкторе (щелкните поле в MainWindow) и присвоив свойству Имя в верхней части окна Свойства значение grid1.

  4. В окне Свойства щелкните многоточие (...) рядом со свойством ColumnDefinitions , чтобы открыть диалоговое окно Редактор коллекций .

  5. В диалоговом окне Редактор коллекций нажмите кнопку Добавить три раза, чтобы вставить три столбца в макет. Первый столбец будет содержать панель элементов, во втором — Designer рабочего процесса, а третий столбец будет использоваться для инспектора свойств.

  6. Присвойте свойству Width среднего столбца значение "4*".

  7. Нажмите кнопку OK, чтобы сохранить изменения. Следующий код XAML добавляется в файл MainWindow.xaml :

    <Grid Name="grid1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition Width="4*" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
    </Grid>
    
  8. В Обозреватель решений щелкните правой кнопкой мыши файл MainWindow.xaml и выберите пункт Просмотреть код. Измените код, выполнив следующие шаги.

    1. Добавьте приведенные ниже пространства имен.

      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;
      
    2. Чтобы объявить частное поле члена для хранения экземпляра WorkflowDesigner, добавьте следующий код в MainWindow класс :

      public partial class MainWindow : Window
      {
          private WorkflowDesigner wd;
      
          public MainWindow()
          {
              InitializeComponent();
          }
      }
      
    3. Добавьте в класс 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);
      }
      
    4. Зарегистрируйте метаданные конструктора, чтобы добавить поддержку конструктора для всех встроенных действий. Это позволяет удалять действия с панели элементов на исходное Sequence действие в Designer рабочего процесса. Для этого добавьте RegisterMetadata метод в MainWindow класс :

      private void RegisterMetadata()
      {
          var dm = new DesignerMetadata();
          dm.Register();
      }
      

      Дополнительные сведения о регистрации конструкторов действий см. в разделе How to: Create a Custom Activity Designer.

    5. В конструкторе класса MainWindow добавьте вызовы объявленных ранее методов для регистрации метаданных для поддержки конструктора и создания WorkflowDesigner.

      public MainWindow()
      {
          InitializeComponent();
      
          // Register the metadata.
          RegisterMetadata();
      
          // Add the WFF Designer.
          AddDesigner();
      }
      

      Примечание

      Метод RegisterMetadata регистрирует метаданные конструктора встроенных действий, включая действие Sequence. Поскольку метод AddDesigner использует действие Sequence, сначала необходимо вызвать метод RegisterMetadata.

  9. Нажмите клавишу F5 , чтобы выполнить сборку и запустить решение.

  10. Сведения о том, как добавить поддержку панели элементов и PropertyGrid в конструктор рабочих процессов, см. в разделе Задача 3. Создание панелей элементов и областей propertyGrid.

См. также раздел