Tâche 2 : héberger le Workflow Designer
Cette rubrique s'applique à Windows Workflow Foundation 4.
Cette rubrique décrit la procédure d'hébergement d'une instance du Windows Workflow Designer dans une application Windows Presentation Foundation (WPF).
La procédure configure le contrôle Grid qui contient le concepteur, crée par programmation une instance du WorkflowDesigner qui contient une activité Sequence par défaut, enregistre 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 workflow dans l'application WPF.
Pour héberger le concepteur de workflow
Ouvrez le projet HostingApplication que vous avez créé dans Tâche 1 : créer une nouvelle application Windows Presentation Foundation..
Pour faciliter l'utilisation du Concepteur de workflow, 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, puis, dans la section Disposition, affectez la valeur 600 à la Largeur et la valeur 350 à la Hauteur.
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) et affectant la valeur « grid1 » à la propriété Name située en haut de la fenêtre Propriétés.
Pour ouvrir la boîte de dialogue Éditeur de collection, dans la fenêtre Propriétés, cliquez sur les points de suspension (…) situés en regard de la propriété ColumnDefinitions.
Pour insérer trois colonnes dans la disposition, dans la boîte de dialogue Éditeur de collection, cliquez sur le bouton Ajouter. La première colonne contiendra la Boîte à outils, la deuxième colonne hébergera le Concepteur de workflow et la troisième colonne sera utilisée pour l'inspecteur de propriétés.
Affectez la valeur 4* à la propriété
Width
de la colonne centrale.Pour enregistrer les modifications, cliquez sur OK. 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 Afficher 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 centrale 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, enregistrez les métadonnées du concepteur. Cela vous permet de déplacer des activités, de la boîte à outils vers l'activité Sequence d'origine dans le Concepteur de workflow. Pour ce faire, ajoutez la méthode
RegisterMetadata
à la classeMainWindow
.private void RegisterMetadata() { DesignerMetadata dm = new DesignerMetadata(); dm.Register(); }
Pour plus d'informations sur le sujet suivant l'enregistrement de concepteurs d'activités, consultez Procédure : 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(); }
Remarque : La méthode RegisterMetadata
enregistre les métadonnées du concepteur relatives aux activités intégrées, dont l'activité Sequence. Étant donné que la méthodeAddDesigner
utilise l'activité Sequence, la méthodeRegisterMetadata
doit être appelée en premier.
Pour générer et exécuter la solution, appuyez sur F5.
Pour savoir comment ajouter la prise en charge de la boîte à outils et de PropertyGrid à votre concepteur de workflow réhébergé, consultez Tâche 3 : créer les volets de PropertyGrid et boîte à outils.
Voir aussi
Tâches
Tâche 1 : créer une nouvelle application Windows Presentation Foundation.
Tâche 3 : créer les volets de PropertyGrid et boîte à outils