Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El rehospedaje del diseñador es un escenario común que hace referencia al hospedaje del lienzo de diseño de flujo de trabajo dentro de una aplicación personalizada. La aplicación de hospedaje con la que la mayoría de los usuarios están familiarizados es Visual Studio; sin embargo, hay una serie de escenarios en los que mostrar el diseñador de flujo de trabajo en una aplicación puede ser útil:
Aplicaciones de supervisión (lo que permite a un usuario final visualizar el proceso, así como datos en tiempo de ejecución sobre el proceso, como el estado activo actualmente, los datos de tiempo de ejecución agregados u otra información sobre una instancia del flujo de trabajo).
Aplicaciones que permiten a un usuario personalizar el proceso con un conjunto limitado de actividades.
Para admitir estos tipos de aplicaciones, el diseñador de flujos de trabajo se distribuye dentro del marco .NET, y se puede alojar dentro de una aplicación WPF, o en una aplicación WinForms con el código de alojamiento de WPF adecuado. En el ejemplo DesignerRehosting se muestra lo siguiente:
Rehospedar el diseñador WF.
Utilizar el cuadro de herramientas y la cuadrícula de propiedad hospedados en otro host.
Rehospedar el diseñador
En este ejemplo se muestra cómo crear el diseño de WPF para contener el diseñador, visto en el siguiente diseño de cuadrícula (código del cuadro de herramientas omitido para los problemas de espacio). Tenga en cuenta la denominación de los bordes que contienen el diseñador y la cuadrícula de propiedad.
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<sapt:ToolboxControl>...</sapt:ToolboxControl>
</Border>
<Border Grid.Column="1" Name="DesignerBorder"/>
<Border Grid.Column="2" Name="PropertyBorder"/>
</Grid>
A continuación, el ejemplo crea el diseñador y asocia sus propiedades View y PropertyInspectorView primarias al contenedor adecuado en la interfaz de usuario. Hay algunas líneas adicionales de código en el ejemplo siguiente que merecen una explicación. La Register llamada es necesaria para asociar los diseñadores de actividad predeterminados para las actividades enviadas a .NET Framework. Se llama a Load para pasar el elemento de WF que se va a editar. Por último, el View (lienzo principal) y PropertyInspectorView (cuadrícula de propiedades) se colocan en la superficie de la interfaz de usuario.
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
// register metadata
(new DesignerMetadata()).Register();
// create the workflow designer
WorkflowDesigner wd = new WorkflowDesigner();
wd.Load(new Sequence());
DesignerBorder.Child = wd.View;
PropertyBorder.Child = wd.PropertyInspectorView;
}
Utilizar el cuadro de herramientas hospedado en otro host
Este ejemplo utiliza el control del cuadro de herramientas hospedado en otro host mediante declaración en XAML. Tenga en cuenta que, en el código, se puede pasar un tipo al ToolboxItemWrapper constructor.
<!-- Copyright (c) Microsoft Corporation. All rights reserved-->
<Window x:Class="Microsoft.Samples.DesignerRehosting.RehostingWfDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sapt="clr-namespace:System.Activities.Presentation.Toolbox;assembly=System.Activities.Presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="Window1" Height="600" Width="900">
<Window.Resources>
<sys:String x:Key="AssemblyName">System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</sys:String>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<sapt:ToolboxControl>
<sapt:ToolboxCategory CategoryName="Basic">
<sapt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}" >
<sapt:ToolboxItemWrapper.ToolName>
System.Activities.Statements.Sequence
</sapt:ToolboxItemWrapper.ToolName>
</sapt:ToolboxItemWrapper>
<sapt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sapt:ToolboxItemWrapper.ToolName>
System.Activities.Statements.WriteLine
</sapt:ToolboxItemWrapper.ToolName>
</sapt:ToolboxItemWrapper>
<sapt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sapt:ToolboxItemWrapper.ToolName>
System.Activities.Statements.If
</sapt:ToolboxItemWrapper.ToolName>
</sapt:ToolboxItemWrapper>
<sapt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sapt:ToolboxItemWrapper.ToolName>
System.Activities.Statements.While
</sapt:ToolboxItemWrapper.ToolName>
</sapt:ToolboxItemWrapper>
</sapt:ToolboxCategory>
</sapt:ToolboxControl>
</Border>
<Border Grid.Column="1" Name="DesignerBorder"/>
<Border Grid.Column="2" Name="PropertyBorder"/>
</Grid>
</Window>
Uso del ejemplo
Abra la solución DesignerRehosting.sln en Visual Studio.
Presione F5 para compilar y ejecutar la aplicación.
Una aplicación WPF se inicia con un diseñador hospedado en otro host.