Compartir a través de


Tarea 3: Crear los recuadros de Cuadro de herramientas y PropertyGrid

Este tema es aplicable a Windows Workflow Foundation 4.

En esta tarea, creará los recuadros Cuadro de herramientas y PropertyGrid, y los agregará al Diseñador de flujo de trabajo de Windows rehospedado.

A modo de referencia, el código que debe incluir el archivo MainWindow.xaml.cs después de completar las tres tareas de la serie de temas Rehospedar el Diseñador de flujo de trabajo se proporciona al final de este tema.

Para crear el Cuadro de herramientas y agregarlo a la cuadrícula

  1. Abra el proyecto HostingApplication que obtuvo siguiendo el procedimiento descrito en Tarea 2: Hospedaje del Diseñador de flujo de trabajo.

  2. Haga clic con el botón secundario en el archivo MainWindow.xaml en el recuadro Explorador de soluciones y seleccione Ver código.

  3. Agregue un método GetToolboxControl a la clase MainWindow que cree una clase ToolboxControl, agregue una nueva categoría de cuadro de herramientas al Cuadro de herramientas y asigne los tipos de actividad Assign y Sequence a dicha categoría.

    private ToolboxControl GetToolboxControl()
    {
        // Create the ToolBoxControl.
        ToolboxControl ctrl = new ToolboxControl();
    
        // Create a category.
        ToolboxCategory category = new ToolboxCategory("category1");
    
        // Create Toolbox items.
        ToolboxItemWrapper tool1 = 
            new ToolboxItemWrapper("System.Activities.Statements.Assign", 
            typeof(Assign).Assembly.FullName, null, "Assign");
    
        ToolboxItemWrapper 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. Agregue un método privado AddToolbox a la clase MainWindow para colocar el Cuadro de herramientas en la columna izquierda en la cuadrícula.

    private void AddToolBox()
    {
        ToolboxControl tc = GetToolboxControl();
        Grid.SetColumn(tc, 0);
        grid1.Children.Add(tc);
    }
    
  5. Agregue una llamada al método AddToolBox en el constructor de clase MainWindow() tal y como se muestra en el siguiente código.

    public MainWindow()
    {
        InitializeComponent();
        this.RegisterMetadata();
        this.AddDesigner();
    
        this.AddToolBox();
    }
    
  6. Presione F5 para compilar y ejecutar la solución. Se debería mostrar el cuadro de herramientas que contiene las actividades Assign y Sequence.

Para crear PropertyGrid

  1. Haga clic con el botón secundario en el archivo MainWindow.xaml en el recuadro Explorador de soluciones y seleccione Ver código.

  2. Agregue el método AddPropertyInspector a la clase MainWindow para colocar el recuadro PropertyGrid en la columna situada más a la derecha en la cuadrícula.

    private void AddPropertyInspector()
    {
        Grid.SetColumn(wd.PropertyInspectorView, 2);
        grid1.Children.Add(wd.PropertyInspectorView);            
    }
    
  3. Agregue una llamada al método AddPropertyInspector en el constructor de clase MainWindow() tal y como se muestra en el siguiente código.

    public MainWindow()
    {
        InitializeComponent();
        this.RegisterMetadata();
        this.AddDesigner();
        this.AddToolBox();
    
        this.AddPropertyInspector(); 
    }
    
  4. Presione F5 para compilar y ejecutar la solución. Se deberían mostrar todos los recuadros (el Cuadro de herramientas, el lienzo de diseño de flujo de trabajo y PropertyGrid) y cuando arrastre una actividad Assign o una actividad Sequence al lienzo del diseño, la cuadrícula de propiedad debe actualizarse dependiendo de la actividad resaltada.

Ejemplo

El archivo MainWindow.xaml.cs debe contener ahora el siguiente código.

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()
        {
            DesignerMetadata dm = new DesignerMetadata();
            dm.Register();
        }

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

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

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

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


    }
}

Vea también

Tareas

Tarea 1: Crear una nueva aplicación de Windows Presentation Foundation
Tarea 2: Hospedaje del Diseñador de flujo de trabajo

Otros recursos

Rehospedar el Diseñador de flujo de trabajo