Partager via


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

  1. Ouvrez le projet HostingApplication que vous avez créé dans la Tâche 1 : Créer une application Windows Presentation Foundation.

  2. 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.

  3. 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 ».

  4. 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.

  5. 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.

  6. Définissez la propriété Width de la colonne du milieu sur la valeur « 4* ».

  7. 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>
    
  8. 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 :

    1. 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;
      
    2. 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();
          }
      }
      
    3. Ajoutez la méthode AddDesigner suivante à la classe MainWindow. 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);
      }
      
    4. 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 classe MainWindow :

      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.

    5. 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();
      }
      

      Notes

      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éthode AddDesigner utilise l'activité Sequence, la méthode RegisterMetadata doit être appelée en premier.

  9. Pour générer et exécuter la solution, appuyez sur F5.

  10. 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é.

Voir aussi