Tâche 2 : héberger le concepteur de flux de travail
Cette rubrique décrit la procédure d’hébergement d’une instance du Concepteur de flux de travail Windows dans une application Windows Presentation Foundation (WPF).
La procédure configure le contrôle Grid qui contient le concepteur, crée programmatiquement une instance du WorkflowDesigner qui contient une activité Sequence par défaut, inscrit les métadonnées du concepteur pour fournir la prise en charge du concepteur pour toutes les activités intégrées, et héberge le Concepteur de flux de travail dans l’application WPF.
Pour héberger le concepteur de workflow
Ouvrez le projet HostingApplication que vous avez créé dans la Tâche 1 : Créer une application Windows Presentation Foundation.
Pour faciliter l’utilisation du Concepteur de flux de travail, ajustez la taille de la fenêtre. Pour ce faire, dans le concepteur, sélectionnez MainWindow, appuyez sur F4 pour afficher la fenêtre Propriétés et, dans la section Disposition, définissez la Largeur sur 600 et la Hauteur sur 350.
Définissez le nom de la grille en sélectionnant le panneau Grid dans le concepteur (cliquez sur la zone à l’intérieur de MainWindow), définissez la propriété Name en haut de la fenêtre Propriétés sur « grid1 ».
Dans la fenêtre Propriétés, cliquez sur les points de suspension (…) à côté de la propriété
ColumnDefinitions
pour ouvrir la boîte de dialogue Éditeur de collections.Dans la boîte de dialogue Éditeur de collections, cliquez sur le bouton Ajouter trois fois pour insérer trois colonnes dans la disposition. La première colonne contient la Boîte à outils, la deuxième colonne héberge le Concepteur de flux de travail et la troisième colonne est utilisée pour l’inspecteur de propriétés.
Définissez la propriété
Width
de la colonne du milieu sur la valeur « 4* ».Cliquez sur OK pour enregistrer les modifications. Le XAML suivant est ajouté à votre fichier MainWindow.xaml :
<Grid Name="grid1"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="4*" /> <ColumnDefinition /> </Grid.ColumnDefinitions> </Grid>
Dans l’Explorateur de solutions, cliquez avec le bouton droit sur MainWindow.xaml et sélectionnez Voir le code. Modifiez le code en procédant comme suit :
Ajoutez les espaces de noms suivants :
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;
Pour déclarer un champ de membre privé devant contenir une instance de WorkflowDesigner, ajoutez le code suivant à la classe
MainWindow
:public partial class MainWindow : Window { private WorkflowDesigner wd; public MainWindow() { InitializeComponent(); } }
Ajoutez la méthode
AddDesigner
suivante à la classeMainWindow
. L’implémentation crée une instance de WorkflowDesigner, y ajoute une activité Sequence et la place dans la colonne du milieu de la Grille 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); }
Pour ajouter la prise en charge du concepteur pour toutes les activités intégrées, inscrivez les métadonnées du concepteur. Cela vous permet de déposer des activités de la boîte à outils dans l’activité Sequence d’origine dans le Concepteur de flux de travail. Pour ce faire, ajoutez la méthode
RegisterMetadata
à la classeMainWindow
:private void RegisterMetadata() { var dm = new DesignerMetadata(); dm.Register(); }
Pour plus d’informations sur l’inscription des concepteurs d’activités, consultez Comment créer un concepteur d’activités personnalisées.
Dans le constructeur de classes
MainWindow
, ajoutez des appels aux méthodes précédemment déclarées pour enregistrer les métadonnées dans le but de la prise en charge du concepteur et pour créer l'objet WorkflowDesigner.public MainWindow() { InitializeComponent(); // Register the metadata. RegisterMetadata(); // Add the WFF Designer. AddDesigner(); }
Pour générer et exécuter la solution, appuyez sur F5.
Consultez Tâche 3 : Créer la boîte à outils et les volets PropertyGrid pour découvrir comment ajouter la prise en charge de la boîte à outils et de PropertyGrid à votre concepteur de flux de travail réhébergé.