Пользовательские составные конструкторы - средство представления элементов рабочего процессаCustom Composite Designers - Workflow Items Presenter

System.Activities.Presentation.WorkflowItemsPresenter является типом ключа в модели программирования конструктора WF, позволяющим редактирование коллекции содержащихся элементов.The System.Activities.Presentation.WorkflowItemsPresenter is a key type in the WF designer programming model that allows for the editing of a collection of contained elements. В этом образце показано, как построить конструктор действий, который предоставляет доступ к такой изменяемой коллекции.This sample shows how to build an activity designer that surfaces such an editable collection.

В этом образце показаны следующие действия.This sample demonstrates:

  • Создание настраиваемого конструктора действий с System.Activities.Presentation.WorkflowItemsPresenter.Creating a custom activity designer with a System.Activities.Presentation.WorkflowItemsPresenter.

  • Создание конструктора действий со «свернутым» и «развернутым» представлением.Creating an activity designer with a "collapsed" and "expanded" view.

  • Переопределение конструктора по умолчанию в повторно размещенном приложении.Overriding a default designer in a rehosted application.

Настройка, сборка и выполнение образцаTo set up, build, and run the sample

  1. Откройте UsingWorkflowItemsPresenter.sln образец решения для C# или VB в Visual Studio 2010.Open the UsingWorkflowItemsPresenter.sln sample solution for C# or for VB in Visual Studio 2010.

  2. Постройте и запустите это решение.Build and run the solution. Должно открыться повторно размещенное приложение конструктора рабочих процессов, после чего действия можно перетащить на полотно.A rehosted workflow designer application should open, and you can drag activities onto the canvas.

Описание образцаSample Highlights

Код для этого образца показывает следующее.The code for this sample shows the following:

  • Действие, для которого построен конструктор: ParallelThe activity a designer is built for: Parallel

  • Создание настраиваемого конструктора действий с System.Activities.Presentation.WorkflowItemsPresenter.The creation of a custom activity designer with a System.Activities.Presentation.WorkflowItemsPresenter. Некоторые замечания.A few things to point out:

    • Обратите внимание на использование привязки данных WPF для привязки к ModelItem.Branches.Note the use of WPF data binding to bind to ModelItem.Branches. ModelItem - свойство WorkflowElementDesigner, которое относится к базовому объекту, для которого используется конструктор, в данном случае - Parallel.ModelItem is the property on WorkflowElementDesigner that refers to the underlying object the designer is being used for, in this case, our Parallel.

    • Шаблон WorkflowItemsPresenter.SpacerTemplate может использоваться для указания видимого изображения, отображаемого между отдельными элементами коллекции.The WorkflowItemsPresenter.SpacerTemplate can be used to put a visual to display between the individual items in the collection.

    • WorkflowItemsPresenter.ItemsPanel является шаблоном, который может быть предоставлен для определения макета элементов в коллекции.WorkflowItemsPresenter.ItemsPanel is a template that can be provided to determine the layout of the items in the collection. В данном случае используется горизонтальный элемент StackPanel.In this case, a horizontal stack panel is used.

    Это показано в следующем примере кода.This following example code shows this.

    <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>
    
  • Выполнение связи объекта DesignerAttribute с типом Parallel, а затем вывод указанных атрибутов.Perform an association of the DesignerAttribute to the Parallel type and then output the attributes reported.

    • Сначала зарегистрируйте все конструкторы по умолчанию.First, register all of the default designers.

      Ниже приведен пример кода.The following is the code example.

      // register metadata
      (new DesignerMetadata()).Register();
      RegisterCustomMetadata();
      
      ' register metadata
      Dim metadata = New DesignerMetadata()
      metadata.Register()
      ' register custom metadata
      RegisterCustomMetadata()
      
    • Далее переопределите параллель в методе RegisterCustomMetadata.Then, override the parallel in RegisterCustomMetadata method.

      В следующем коде это показано на языках C# и Visual Basic.The following code shows this in C# and 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
      
  • Наконец, обратите внимание на использование различных шаблонов данных и триггеров для выбора соответствующего шаблона на основании свойства IsRootDesigner.Finally, note the use of differing data templates and triggers to select the appropriate template based on the IsRootDesigner property.

    Ниже приведен пример кода.The following is the code example.

    <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>
    

Важно!

Образцы уже могут быть установлены на компьютере.The samples may already be installed on your machine. Перед продолжением проверьте следующий каталог (по умолчанию).Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Если этот каталог не существует, перейдите к Windows Communication Foundation (WCF) и образцы Windows Workflow Foundation (WF) для .NET Framework 4 для загрузки всех Windows Communication Foundation (WCF) и WFWF примеры.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Этот образец расположен в следующем каталоге.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WF\Basic\CustomActivities\CustomActivityDesigners\WorkflowItemsPresenter

См. такжеSee also