Freigeben über


Aufgabe 2: Hosten des Workflow-Designers

In diesem Thema wird das Verfahren zum Hosten einer instance des Windows Workflow-Designer in einer WPF-Anwendung (Windows Presentation Foundation) beschrieben.

Das Verfahren konfiguriert das Rastersteuerelement, das den Designer enthält, erstellt programmatisch eine Instanz des WorkflowDesigner, die eine Standard-Sequence-Aktivität enthält, registriert die Designer-Metadaten, um Designer-Unterstützung für alle eingebauten Aktivitäten bereitzustellen, und hostet den Workflow Designer in der WPF-Anwendung.

So hosten Sie den Workflow-Designer

  1. Öffnen Sie das Projekt HostingApplication, das Sie in Aufgabe 1: Erstellen einer neuen Windows Presentation Foundation Anwendung erstellt haben.

  2. Passen Sie die Fenstergröße an, um die Verwendung des Workflow-Designers einfacher zu machen. Wählen Sie hierzu im Designer MainWindow, drücken Sie F4, um das Fenster Eigenschaften zu öffnen, und legen Sie im Abschnitt Layout in diesem Fenster die Breite auf 600 und die Höhe auf 350 fest.

  3. Definieren Sie den Rasternamen, indem Sie im Designer auf den Raster-Bereich klicken (das Feld innerhalb von MainWindow) und die Eigenschaft Name oben im Fenster Eigenschaften auf "grid1" festlegen.

  4. Klicken Sie im Fenster Eigenschaften neben der ColumnDefinitions-Eigenschaft auf die Auslassungspunkte (), um das Dialogfeld Auflistungs-Editor zu öffnen.

  5. Klicken Sie im Dialogfeld Auflistungs-Editor drei Mal auf die Schaltfläche Hinzufügen, um drei Spalten in das Layout einzufügen. In der ersten Spalte finden Sie die Toolbox, in der zweiten Spalte den Workflow-Designer und in der dritten Spalte den Eigenschafteninspektor.

  6. Legen Sie die Width-Eigenschaft der mittleren Spalte auf den Wert "4*" fest.

  7. Klicken Sie zum Speichern der Änderungen auf OK. Der Datei MainWindow.xaml wird der folgende XAML-Code hinzugefügt:

    <Grid Name="grid1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition Width="4*" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
    </Grid>
    
  8. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf MainWindow.xaml, und wählen Sie Code anzeigen. Ändern Sie den Code, indem Sie folgende Schritte ausführen:

    1. Fügen Sie die folgenden Namespaces hinzu:

      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. Um ein privates Memberfeld zu deklarieren, das eine Instanz von WorkflowDesigner enthalten soll, fügen Sie der MainWindow-Klasse den folgenden Code hinzu:

      public partial class MainWindow : Window
      {
          private WorkflowDesigner wd;
      
          public MainWindow()
          {
              InitializeComponent();
          }
      }
      
    3. Fügen Sie die folgende AddDesigner-Methode zu der MainWindow-Klasse hinzu. Die Implementierung erstellt eine Instanz von WorkflowDesigner, fügt dieser eine Sequence-Aktivität hinzu und platziert sie in der mittleren Spalte im Raster „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);
      }
      
    4. Registrieren Sie die Designer-Metadaten, um Designerunterstützung für alle integrierten Aktivitäten hinzuzufügen. Damit können Sie Aktivitäten aus der Toolbox auf der ursprünglichen Sequence-Aktivität im Workflow-Designer ablegen. Fügen Sie hierzu der RegisterMetadata-Klasse die MainWindow-Methode hinzu:

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

      Weitere Informationen über die Registrierung von Aktivitätsdesignern finden Sie unter Vorgehensweise: Einen benutzerdefinierten Aktivitätsdesigner erstellen.

    5. Fügen Sie im MainWindow-Klassenkonstruktor den zuvor deklarierten Methoden Aufrufe hinzu, um die Metadaten für die Designerunterstützung zu registrieren und das WorkflowDesigner-Objekt zu erstellen.

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

      Hinweis

      Die RegisterMetadata-Methode registriert die Designer-Metadaten integrierter Aktivitäten, einschließlich der Sequence-Aktivität. Da die AddDesigner-Methode die Sequence-Aktivität verwendet, muss die RegisterMetadata-Methode zuerst aufgerufen werden.

  9. Drücken Sie F5, um die Projektmappe zu erstellen und auszuführen.

  10. Unter Aufgabe 3: Erstellen der Toolbox- und PropertyGrid-Bereiche erfahren Sie, wie Sie Ihrem neu gehosteten Workflow-Designer Toolbox - und PropertyGrid-Unterstützung hinzufügen.

Weitere Informationen