Tarea 2: Hospedaje del Diseñador de flujo de trabajo
Este tema es aplicable a Windows Workflow Foundation 4.
En este tema se describe el procedimiento para hospedar una instancia de Diseñador de flujo de trabajo de Windows en una aplicación Windows Presentation Foundation (WPF).
El procedimiento configura el control de cuadrícula que contiene el diseñador, crea mediante programación una instancia de la clase WorkflowDesigner que contiene una actividad Sequence predeterminada, registra los metadatos del diseñador para proporcionar compatibilidad con el diseñador en todas las actividades integradas y hospeda el Diseñador de flujo de trabajo en la aplicación WPF.
Para hospedar el diseñador de flujo de trabajo
Abra el proyecto HostingApplication que haya creado en Tarea 1: Crear una nueva aplicación de Windows Presentation Foundation.
Ajuste el tamaño de la ventana para facilitar el uso de Diseñador de flujo de trabajo. Para ello, seleccione MainWindow en el diseñador, presione F4 para mostrar la ventana Propiedades y, en la sección Diseño, defina Ancho en 600 y Alto en 350.
Establezca el nombre de la cuadrícula seleccionando el recuadro Cuadrícula en el diseñador (haga clic en el cuadro dentro de MainWindow) y estableciendo la propiedad Nombre en la parte superior de la ventana Propiedades en "grid1".
En la ventana Propiedades, haga clic en los puntos suspensivos (…) junto a la propiedad ColumnDefinitions para abrir el cuadro de diálogo Editor de la colección.
En el cuadro de diálogo Editor de la colección, haga clic en el botón Agregar tres veces para insertar tres columnas en el diseño. La primera columna contendrá el cuadro de herramientas, la segunda hospedará Diseñador de flujo de trabajoy la tercera se usará para el inspector de propiedad.
Establezca la propiedad
Width
de la columna central en el valor "4*".Haga clic en Aceptar para guardar los cambios. El siguiente XAML se agrega a su archivo MainWindow.xaml:
<Grid Name="grid1"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="4*" /> <ColumnDefinition /> </Grid.ColumnDefinitions> </Grid>
En el Explorador de soluciones, haga clic con el botón secundario en MainWindow.xaml y seleccione Ver código. Modifique el código siguiendo estos pasos:
Agregue los siguientes espacios de nombres:
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;
Para declarar un campo de miembro privado que hospede una instancia de WorkflowDesigner, agregue el siguiente código a la clase
MainWindow
.public partial class MainWindow : Window { private WorkflowDesigner wd; public MainWindow() { InitializeComponent(); } }
Agregue el método
AddDesigner
siguiente a la claseMainWindow
. La implementación crea una instancia de WorkflowDesigner, le agrega una actividad Sequence y la coloca en la columna central de la cuadrícula 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); }
Registre los metadatos del diseñador para agregar la compatibilidad con el diseñador para todas las actividades integradas. Esto le permite colocar las actividades del cuadro de herramientas en la actividad Sequence original en Diseñador de flujo de trabajo. Para ello, agregue el método
RegisterMetadata
a la claseMainWindow
.private void RegisterMetadata() { DesignerMetadata dm = new DesignerMetadata(); dm.Register(); }
Para obtener más información sobre el registro de diseñadores de actividad, vea Cómo: Crear un diseñador de actividad personalizado.
En el constructor de clases
MainWindow
, agregue llamadas a los métodos declarados previamente para registrar los metadatos a fin de ser compatibles con el diseñador y crear WorkflowDesigner.public MainWindow() { InitializeComponent(); // Register the metadata RegisterMetadata(); // Add the WFF Designer AddDesigner(); }
Nota: El método RegisterMetadata
registra los metadatos del diseñador de actividades integradas incluida la actividad Sequence. Puesto que el métodoAddDesigner
usa la actividad Sequence, es necesario llamar primero al métodoRegisterMetadata
.
Presione F5 para compilar y ejecutar la solución.
Vea Tarea 3: Crear los recuadros de Cuadro de herramientas y PropertyGrid para obtener información sobre cómo agregar la compatibilidad para el cuadro de herramientas y PropertyGrid a su diseñador de flujo de trabajo rehospedado.
Vea también
Tareas
Tarea 1: Crear una nueva aplicación de Windows Presentation Foundation
Tarea 3: Crear los recuadros de Cuadro de herramientas y PropertyGrid