Concepteurs composites personnalisés - Présentateur d'éléments de workflow
Cette rubrique s'applique à Windows Workflow Foundation 4.
WorkflowItemsPresenter est un type de clé dans le modèle de programmation de concepteur WF qui permet la modification d'une collection d'éléments contenus. Cet exemple montre comment générer un concepteur d'activités qui expose une telle collection modifiable.
Cet exemple illustre les opérations suivantes :
Création d'un concepteur d'activités personnalisées avec un WorkflowItemsPresenter.
Création d'un concepteur d'activités avec une vue « réduite » et « développée ».
Substitution d'un concepteur par défaut dans une application réhébergée.
Pour configurer, générer et exécuter l'exemple
Ouvrez l'exemple de solution UsingWorkflowItemsPresenter.sln pour C# ou pour VB dans Visual Studio 2010.
Générez et exécutez la solution. Une application de concepteur de workflow réhébergée doit s'ouvrir, et vous pouvez faire glisser des activités sur la zone de dessin.
Points clés de l'exemple
Le code de cet exemple illustre les points suivants :
L'activité pour laquelle un concepteur est conçu :
Parallel
La création d'un concepteur d'activités personnalisées avec un WorkflowItemsPresenter. Quelques points à noter :
Remarquez l'utilisation de la liaison de données WPF pour créer une liaison avec
ModelItem.Branches
.ModelItem
est la propriété sur WorkflowElementDesigner qui fait référence à l'objet sous-jacent pour lequel le concepteur est utilisé ; dans le cas présent, notreParallel
.SpacerTemplate peut être utilisé pour placer un visuel à afficher entre les éléments individuels de la collection.
ItemsPanel est un modèle qui peut être fourni pour déterminer la disposition des éléments dans la collection. Dans le cas présent, un panneau d'empilement horizontal est utilisé.
L'exemple de code suivant illustre ce point.
<sad:WorkflowItemsPresenter HintText="Drop Activities Here"
Items="{Binding Path=ModelItem.Branches}">
<sad:WorkflowItemsPresenter.SpacerTemplate>
<DataTemplate>
<Ellipse Width="10" Height="10" Fill="Black"/>
</DataTemplate>
</sad:WorkflowItemsPresenter.SpacerTemplate>
<sad:WorkflowItemsPresenter.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</sad:WorkflowItemsPresenter.ItemsPanel>
</sad:WorkflowItemsPresenter>
Effectuez une association de
DesignerAttribute
au typeParallel
, puis fournissez en sortie les attributs signalés.- En premier lieu, enregistrez tous les concepteurs par défaut.
Voici l'exemple de code.
// register metadata
(new DesignerMetadata()).Register();
RegisterCustomMetadata();
' register metadata
Dim metadata = New DesignerMetadata()
metadata.Register()
' register custom metadata
RegisterCustomMetadata()
-
- Ensuite, substituez la parallèle dans la méthode
RegisterCustomMetadata
.
- Ensuite, substituez la parallèle dans la méthode
Le code suivant illustre ce point en C# et en Visual Basic.
C#
void RegisterCustomMetadata()
{
AttributeTableBuilder builder = new AttributeTableBuilder();
builder.AddCustomAttributes(typeof(Parallel), new DesignerAttribute(typeof(CustomParallelDesigner)));
MetadataStore.AddAttributeTable(builder.CreateTable());
}
Sub RegisterCustomMetadata()
Dim builder As New AttributeTableBuilder()
builder.AddCustomAttributes(GetType(Parallel), New DesignerAttribute(GetType(CustomParallelDesigner)))
MetadataStore.AddAttributeTable(builder.CreateTable())
End Sub
- Enfin, notez l'utilisation de modèles de données et de déclencheurs différents pour sélectionner le modèle approprié en fonction de la propriété
IsRootDesigner
.
Voici l'exemple de code.
<sad:ActivityDesigner x:Class="Microsoft.Samples.CustomParallelDesigner"
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sad="clr-namespace:System.Activities.Design;assembly=System.Activities.Design"
xmlns:sadv="clr-namespace:System.Activities.Design.View;assembly=System.Activities.Design">
<sad:ActivityDesigner.Resources>
<DataTemplate x:Key="Expanded">
<StackPanel>
<TextBlock>This is the Expanded View</TextBlock>
<sad:WorkflowItemsPresenter HintText="Drop Activities Here"
Items="{Binding Path=ModelItem.Branches}">
<sad:WorkflowItemsPresenter.SpacerTemplate>
<DataTemplate>
<Ellipse Width="10" Height="10" Fill="Black"/>
</DataTemplate>
</sad:WorkflowItemsPresenter.SpacerTemplate>
<sad:WorkflowItemsPresenter.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</sad:WorkflowItemsPresenter.ItemsPanel>
</sad:WorkflowItemsPresenter>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="Collapsed">
<TextBlock>This is the Collapsed View</TextBlock>
</DataTemplate>
<Style x:Key="ExpandOrCollapsedStyle" TargetType="{x:Type ContentPresenter}">
<Setter Property="ContentTemplate" Value="{DynamicResource Collapsed}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsRootDesigner}" Value="true">
<Setter Property="ContentTemplate" Value="{DynamicResource Expanded}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</sad: ActivityDesigner.Resources>
<Grid>
<ContentPresenter Style="{DynamicResource ExpandOrCollapsedStyle}" Content="{Binding}"/>
</Grid>
</sad: ActivityDesigner>
Remarque : |
---|
Les exemples peuvent déjà être installés sur votre ordinateur. Recherchez le répertoire (par défaut) suivant avant de continuer.
<LecteurInstall>:\WF_WCF_Samples
Si ce répertoire n'existe pas, rendez-vous sur la page (éventuellement en anglais) des exemples Windows Communication Foundation (WCF) et Windows Workflow Foundation (WF) pour .NET Framework 4 pour télécharger tous les exemples Windows Communication Foundation (WCF) et WF. Cet exemple se trouve dans le répertoire suivant.
<LecteurInstall>:\WF_WCF_Samples\WF\Basic\CustomActivities\CustomActivityDesigners\WorkflowItemsPresenter
|