Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dies System.Activities.Presentation.WorkflowItemsPresenter ist ein Schlüsseltyp im WF-Designerprogrammiermodell, das die Bearbeitung einer Sammlung von enthaltenen Elementen ermöglicht. In diesem Beispiel wird gezeigt, wie Sie einen Aktivitäts-Designer erstellen, der eine solche bearbeitbare Sammlung anzeigt.
Das Beispiel "WorkflowItemsPresenter " veranschaulicht Folgendes:
Erstellen eines benutzerdefinierten Aktivitätsdesigners mit einem System.Activities.Presentation.WorkflowItemsPresenter.
Erstellen eines Aktivitätsdesigners mit einer „reduzierten“ und „erweiterten“ Ansicht.
Überschreiben eines standardmäßigen Designers in einer neu gehosteten Anwendung.
Einrichten, Erstellen und Ausführen des Beispiels
Öffnen Sie die UsingWorkflowItemsPresenter.sln Beispiellösung für C# oder für Visual Basic in Visual Studio.
Erstellen Sie das Projekt, und führen Sie es aus.
Eine neu gehostete Workflow-Designeranwendung wird geöffnet, und Sie können Aktivitäten auf den Zeichenbereich ziehen.
Beispielhöhepunkte
Der Code für dieses Beispiel zeigt Folgendes:
Die Aktivität, für die ein Designer erstellt wird:
ParallelDie Erstellung eines benutzerdefinierten Aktivitätsdesigners mit einem System.Activities.Presentation.WorkflowItemsPresenter. Einige Punkte, die Sie darauf hinweisen sollten:
Beachten Sie die Verwendung der WPF-Datenbindung, um eine Bindung an
ModelItem.Branchesauszuführen.ModelItemist die Eigenschaft vonWorkflowElementDesigner, die auf das zugrunde liegende Objekt verweist, für das der Designer verwendet wird. In diesem Fall handelt es sich um unsereParallel.WorkflowItemsPresenter.SpacerTemplate kann verwendet werden, um ein visuelle Trennung festzulegen, die zwischen den einzelnen Elementen in der Auflistung angezeigt werden soll.
WorkflowItemsPresenter.ItemsPanel ist eine Vorlage, die bereitgestellt werden kann, um das Layout der Elemente in der Auflistung zu bestimmen. In diesem Fall wird ein horizontales Stapelpanel verwendet.
Dieser folgende Beispielcode zeigt dies.
<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>Führen Sie eine Verknüpfung von
DesignerAttributemit dem TypParalleldurch und geben Sie dann die gemeldeten Attribute aus.Registrieren Sie zunächst alle Standarddesigner.
Im Folgenden sehen Sie das Codebeispiel.
// register metadata (new DesignerMetadata()).Register(); RegisterCustomMetadata();' register metadata Dim metadata = New DesignerMetadata() metadata.Register() ' register custom metadata RegisterCustomMetadata()Überschreiben Sie dann "Parallel" in der
RegisterCustomMetadata-Methode.Der folgende Code zeigt dies in C# und Visual Basic.
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
Beachten Sie schließlich die Verwendung unterschiedlicher Datenvorlagen und Trigger, um die entsprechende Vorlage basierend auf der
IsRootDesignerEigenschaft auszuwählen.Im Folgenden sehen Sie das Codebeispiel.
<sad:ActivityDesigner x:Class="Microsoft.Samples.CustomParallelDesigner" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://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>