Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
System.Activities.Presentation.WorkflowItemsPresenter är en nyckeltyp i WF-designerns programmeringsmodell som möjliggör redigering av en samling inneslutna element. Det här exemplet visar hur du skapar en aktivitetsdesigner som visar en sådan redigerbar samling.
Exemplet WorkflowItemsPresenter visar:
Skapa en anpassad aktivitetsdesigner med en System.Activities.Presentation.WorkflowItemsPresenter.
Skapa en aktivitetsdesigner med en "komprimerad" och "expanderad" vy.
Åsidosätter en standarddesigner i en applikation med ny värdmiljö.
Konfigurera, skapa och köra exemplet
Öppna den UsingWorkflowItemsPresenter.sln exempellösningen för C# eller Visual Basic i Visual Studio.
Skapa och kör lösningen.
En omplacerad arbetsflödesdesigner-applikation öppnas, och du kan dra aktiviteter till kanvasen.
Exempelhöjdpunkter
Koden för det här exemplet visar följande:
Aktiviteten som en designer har skapats för:
ParallelSkapa en anpassad aktivitetsdesigner med hjälp av System.Activities.Presentation.WorkflowItemsPresenter. Några saker att påpeka:
Observera användningen av WPF-databindning för att binda till
ModelItem.Branches.ModelItemär egenskapen hosWorkflowElementDesignersom refererar till det objekt som designern avser, i det här fallet vårParallel.WorkflowItemsPresenter.SpacerTemplate Kan användas för att placera ett visuellt objekt som ska visas mellan de enskilda objekten i samlingen.
WorkflowItemsPresenter.ItemsPanel är en mall som kan tillhandahållas för att fastställa layouten för objekten i samlingen. I det här fallet används en vågrät stackpanel.
Följande exempelkod visar detta.
<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>Utför en association av
DesignerAttributetillParalleltypen och mata sedan ut de rapporterade attributen.Registrera först alla standarddesigners.
Följande är kodexemplet.
// register metadata (new DesignerMetadata()).Register(); RegisterCustomMetadata();' register metadata Dim metadata = New DesignerMetadata() metadata.Register() ' register custom metadata RegisterCustomMetadata()Åsidosätt sedan den parallella metoden i
RegisterCustomMetadata.Följande kod visar detta i C# och 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
Observera slutligen användningen av olika datamallar och utlösare för att välja lämplig mall baserat på
IsRootDesigneregenskapen.Följande är kodexemplet.
<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>