Diseñadores compuestos personalizados - Moderador de elementos de flujo de trabajo

WorkflowItemPresenter es un tipo de clave del modelo de programación del diseñador de WF que permite la creación de una "zona de colocación" donde se puede colocar una actividad arbitraria. En este, ejemplo se muestra cómo compilar un diseñador de actividades que muestre este tipo de "zona de colocación".

En el ejemplo de WorkflowItemPresenter, se muestra lo siguiente:

  • Crear un diseñador de actividad personalizado con un objeto WorkflowItemPresenter.

  • Registrar el diseñador personalizado mediante el almacén de metadatos.

  • Programar el cuadro de herramientas hospedado en otro host de manera imperativa o mediante declaración.

Detalles del ejemplo

El código de este ejemplo muestra:

  • La compilación del diseñador de actividades personalizado para la clase SimpleNativeActivity.

  • La creación de un diseñador de actividades personalizado con un objeto WorkflowItemPresenter.

<sap:ActivityDesigner x:Class="Microsoft.Samples.UsingWorkflowItemPresenter.SimpleNativeDesigner"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
    xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation">
    <sap:ActivityDesigner.Resources>
        <DataTemplate x:Key="Collapsed">
            <StackPanel>
                <TextBlock>This is the collapsed view</TextBlock>
            </StackPanel>
        </DataTemplate>
        <DataTemplate x:Key="Expanded">
            <StackPanel>
                <TextBlock>Custom Text</TextBlock>
                <sap:WorkflowItemPresenter Item="{Binding Path=ModelItem.Body, Mode=TwoWay}"
                                        HintText="Please drop an activity here" />
            </StackPanel>
        </DataTemplate>
        <Style x:Key="ExpandOrCollapsedStyle" TargetType="{x:Type ContentPresenter}">
            <Setter Property="ContentTemplate" Value="{DynamicResource Collapsed}"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=ShowExpanded}" Value="true">
                    <Setter Property="ContentTemplate" Value="{DynamicResource Expanded}"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </sap:ActivityDesigner.Resources>
    <Grid>
        <ContentPresenter Style="{DynamicResource ExpandOrCollapsedStyle}" Content="{Binding}" />
    </Grid>
</sap:ActivityDesigner>

Observe el uso de enlace de datos de WPF para enlazarse a ModelItem.Body. ModelItem es la propiedad de ActivityDesigner que hace referencia al objeto subyacente para el que se está usando el diseñador, en este caso, nuestra SimpleNativeActivity.

Configuración, compilación y ejecución del ejemplo

  1. Abra la solución en Visual Studio.

  2. Presione F5 para compilar y ejecutar la aplicación.

Consulte también