Delen via


Taak 3: De werkset- en PropertyGrid-deelvensters maken

In deze taak maakt u de deelvensters Werkset en PropertyGrid en voegt u deze toe aan de opnieuw gehoste Windows-werkstroom Designer.

Ter referentie: de code die in het bestand MainWindow.xaml.cs moet staan na het voltooien van de drie taken in de reeks onderwerpen opnieuw hosten van de werkstroom Designer reeks onderwerpen, vindt u aan het einde van dit onderwerp.

De werkset maken en toevoegen aan het raster

  1. Open het project HostingApplication dat u hebt verkregen door de procedure te volgen die wordt beschreven in Taak 2: De werkstroom hosten Designer.

  2. Klik in het deelvenster Solution Explorer met de rechtermuisknop op het bestand MainWindow.xaml en selecteer Code weergeven.

  3. Voeg een GetToolboxControl methode toe aan de MainWindow klasse die een ToolboxControlmaakt, een nieuwe categorie Werkset aan de werkset toevoegt en de Assign activiteitstypen en Sequence aan die categorie toewijst.

    private ToolboxControl GetToolboxControl()
    {
        // Create the ToolBoxControl.
        var ctrl = new ToolboxControl();
    
        // Create a category.
        var category = new ToolboxCategory("category1");
    
        // Create Toolbox items.
        var tool1 =
            new ToolboxItemWrapper("System.Activities.Statements.Assign",
            typeof(Assign).Assembly.FullName, null, "Assign");
    
        var tool2 = new ToolboxItemWrapper("System.Activities.Statements.Sequence",
            typeof(Sequence).Assembly.FullName, null, "Sequence");
    
        // Add the Toolbox items to the category.
        category.Add(tool1);
        category.Add(tool2);
    
        // Add the category to the ToolBox control.
        ctrl.Categories.Add(category);
        return ctrl;
    }
    
  4. Voeg een persoonlijke AddToolbox methode toe aan de MainWindow klasse waarmee de werkset in de linkerkolom van het raster wordt geplaatst.

    private void AddToolBox()
    {
        ToolboxControl tc = GetToolboxControl();
        Grid.SetColumn(tc, 0);
        grid1.Children.Add(tc);
    }
    
  5. Voeg een aanroep toe aan de AddToolBox methode in de MainWindow() klasseconstructor, zoals wordt weergegeven in de volgende code:

    public MainWindow()
    {
        InitializeComponent();
        this.RegisterMetadata();
        this.AddDesigner();
    
        this.AddToolBox();
    }
    
  6. Druk op F5 om uw oplossing te bouwen en uit te voeren. De werkset met de Assign activiteiten en Sequence moet worden weergegeven.

Het PropertyGrid maken

  1. Klik in het deelvenster Solution Explorer met de rechtermuisknop op het bestand MainWindow.xaml en selecteer Code weergeven.

  2. Voeg de AddPropertyInspector methode toe aan de MainWindow klasse om het deelvenster PropertyGrid in de meest rechtse kolom in het raster te plaatsen:

    private void AddPropertyInspector()
    {
        Grid.SetColumn(wd.PropertyInspectorView, 2);
        grid1.Children.Add(wd.PropertyInspectorView);
    }
    
  3. Voeg een aanroep toe aan de AddPropertyInspector methode in de MainWindow() klasseconstructor, zoals wordt weergegeven in de volgende code:

    public MainWindow()
    {
        InitializeComponent();
        this.RegisterMetadata();
        this.AddDesigner();
        this.AddToolBox();
    
        this.AddPropertyInspector();
    }
    
  4. Druk op F5 om de oplossing te bouwen en uit te voeren. De deelvensters Werkset, werkstroomontwerpcanvas en PropertyGrid moeten allemaal worden weergegeven. Wanneer u een Assign activiteit of Sequence activiteit naar het ontwerpcanvas sleept, moet het eigenschappenraster worden bijgewerkt, afhankelijk van de gemarkeerde activiteit.

Voorbeeld

Het bestand MainWindow.xaml.cs moet nu de volgende code bevatten:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
// dlls added.
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;

namespace HostingApplication
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private WorkflowDesigner wd;

        public MainWindow()
        {
            InitializeComponent();
            RegisterMetadata();
            AddDesigner();
            this.AddToolBox();
            this.AddPropertyInspector();
        }

        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);
        }

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

        private ToolboxControl GetToolboxControl()
        {
            // Create the ToolBoxControl.
            var ctrl = new ToolboxControl();

            // Create a category.
            var category = new ToolboxCategory("category1");

            // Create Toolbox items.
            var tool1 =
                new ToolboxItemWrapper("System.Activities.Statements.Assign",
                typeof(Assign).Assembly.FullName, null, "Assign");

            var tool2 = new ToolboxItemWrapper("System.Activities.Statements.Sequence",
                typeof(Sequence).Assembly.FullName, null, "Sequence");

            // Add the Toolbox items to the category.
            category.Add(tool1);
            category.Add(tool2);

            // Add the category to the ToolBox control.
            ctrl.Categories.Add(category);
            return ctrl;
        }

        private void AddToolBox()
        {
            ToolboxControl tc = GetToolboxControl();
            Grid.SetColumn(tc, 0);
            grid1.Children.Add(tc);
        }

        private void AddPropertyInspector()
        {
            Grid.SetColumn(wd.PropertyInspectorView, 2);
            grid1.Children.Add(wd.PropertyInspectorView);
        }

    }
}

Zie ook