Aracılığıyla paylaş


Özel Kompozit Tasarımcılar - İş Akışı Öğeleri Gösterici

, System.Activities.Presentation.WorkflowItemsPresenter WF tasarımcısı programlama modelinde bulunan ve kapsanan öğelerden oluşan bir koleksiyonun düzenlenmesine olanak tanıyan bir anahtar türüdür. Bu örnek, düzenlenebilir bir koleksiyonu ortaya çıkaran bir etkinlik tasarımcısının nasıl oluşturulduğunu gösterir.

WorkflowItemsPresenter örneği aşağıdakileri gösterir:

  • System.Activities.Presentation.WorkflowItemsPresenter ile özel etkinlik tasarımcısı oluşturma.

  • "Daraltılmış" ve "genişletilmiş" görünüme sahip bir etkinlik tasarımcısı oluşturma.

  • Yeniden barındırılan bir uygulamada varsayılan tasarımcıyı geçersiz kılma.

Örneği ayarlama, derleme ve çalıştırma

  1. Visual Studio'da C# veya Visual Basic için UsingWorkflowItemsPresenter.sln örnek çözümünü açın.

  2. Çözümü derleyin ve çalıştırın.

    Yeniden barındırılan bir iş akışı tasarımcısı uygulaması açılır ve etkinlikleri tuvale sürükleyebilirsiniz.

Örnek vurgular

Bu örneğin kodu aşağıdakileri gösterir:

  • Tasarımcının uzmanlaştığı etkinlik: Parallel

  • ile System.Activities.Presentation.WorkflowItemsPresenterözel etkinlik tasarımcısı oluşturma. Dikkate almak için birkaç nokta:

    • WPF veri bağlamasının ModelItem.Branches ile bağlanmasındaki kullanımına dikkat edin. ModelItem tasarımcının kullanılmakta olduğu temel nesneye atıfta bulunan WorkflowElementDesigner özelliğidir; bu durumda, bizim Parallel.

    • , WorkflowItemsPresenter.SpacerTemplate koleksiyondaki tek tek öğeler arasında görüntülenecek bir görsel koymak için kullanılabilir.

    • WorkflowItemsPresenter.ItemsPanel koleksiyondaki öğelerin düzenini belirlemek için sağlanabilir bir şablondur. Bu durumda yatay yığın paneli kullanılır.

    Aşağıdaki örnek kodda bu gösterilmektedir.

    <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 öğesini Parallel türüyle ilişkilendirin ve ardından bildirilen öznitelikleri çıkartın.

    • İlk olarak, tüm varsayılan tasarımcıları kaydedin.

      Kod örneği aşağıda verilmiştir.

      // register metadata
      (new DesignerMetadata()).Register();
      RegisterCustomMetadata();
      
      ' register metadata
      Dim metadata = New DesignerMetadata()
      metadata.Register()
      ' register custom metadata
      RegisterCustomMetadata()
      
    • Ardından RegisterCustomMetadata yönteminde paralel işlemi geçersiz kılın.

      Aşağıdaki kod bunu C# ve Visual Basic'te gösterir.

      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
      
  • Son olarak, özelliğine göre uygun şablonu seçmek için farklı veri şablonlarının ve tetikleyicilerin kullanıldığına IsRootDesigner dikkat edin.

    Kod örneği aşağıda verilmiştir.

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

Ayrıca bakınız