Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
System.Activities.Presentation.WorkflowItemsPresenter é um tipo chave no modelo de programação do designer WF que permite a edição de uma coleção de elementos inseridos. Este exemplo mostra como criar um designer de atividades que apresenta uma coleção editável.
O exemplo WorkflowItemsPresenter demonstra:
Criando um designer personalizado de atividade com System.Activities.Presentation.WorkflowItemsPresenter.
Criar um designer de atividade com uma exibição "recolhida" e "expandida".
Substituindo um designer padrão em um aplicativo rehosted.
Configurar, compilar e executar o exemplo
Abra a solução de exemplo UsingWorkflowItemsPresenter.sln para C# ou para Visual Basic no Visual Studio.
Compile e execute a solução.
Um aplicativo rehosted de designer de fluxo de trabalho é aberto, e você pode arrastar atividades na tela.
Destaques de amostra
O código deste exemplo mostra o seguinte:
A atividade para a qual um designer foi criado:
ParallelA criação de um designer personalizado de atividade com System.Activities.Presentation.WorkflowItemsPresenter. Algumas coisas para apontar:
Observe o uso de associação de dados de WPF associar a
ModelItem.Branches.ModelItemé a propriedade emWorkflowElementDesignerque refere-se ao objeto subjacente que o designer está sendo usado para, nesse caso, nossoParallel.WorkflowItemsPresenter.SpacerTemplate pode ser usado para colocar um visual para ser exibido entre os itens individuais na coleção.
WorkflowItemsPresenter.ItemsPanel é um modelo que pode ser fornecido para determinar o layout dos itens na coleção. Nesse caso, um painel horizontal de pilha é usado.
Este código de exemplo a seguir mostra isso.
<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>Realize a associação do
DesignerAttributeao tipoParallel, e então gere os atributos relatados.Primeiro, registre todos os designers padrão.
Veja a seguir o exemplo de código.
// register metadata (new DesignerMetadata()).Register(); RegisterCustomMetadata();' register metadata Dim metadata = New DesignerMetadata() metadata.Register() ' register custom metadata RegisterCustomMetadata()Em seguida, substituir a paralela no método de
RegisterCustomMetadata.O código a seguir mostra isso no C# e no 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
Por fim, observe o uso de diferentes modelos de dados e gatilhos para selecionar o modelo apropriado com base na
IsRootDesignerpropriedade.Veja a seguir o exemplo de código.
<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>