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
Öffnen Sie das Projekt HostingApplication, das Sie in Aufgabe 1: Erstellen einer neuen Windows Presentation Foundation Anwendung erstellt haben.
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.
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.
Klicken Sie im Fenster Eigenschaften neben der
ColumnDefinitions
-Eigenschaft auf die Auslassungspunkte (…), um das Dialogfeld Auflistungs-Editor zu öffnen.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.
Legen Sie die
Width
-Eigenschaft der mittleren Spalte auf den Wert "4*" fest.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>
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:
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;
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(); } }
Fügen Sie die folgende
AddDesigner
-Methode zu derMainWindow
-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); }
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 dieMainWindow
-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.
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(); }
Drücken Sie F5, um die Projektmappe zu erstellen und auszuführen.
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.