Aracılığıyla paylaş


Özel Bileşik Tasarımcılar - İş Akışı Öğeleri Sunucu

, 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, böyle düzenlenebilir bir koleksiyonu ortaya çıkaran bir etkinlik tasarımcısının nasıl derlendiğini gösterir.

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

  • ile System.Activities.Presentation.WorkflowItemsPresenterö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 oluşturulduğu etkinlik: Parallel

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

    • bağlamak için WPF veri bağlamasının kullanımına dikkat edin ModelItem.Branches. ModelItem , tasarımcının kullanılmakta olduğu temel nesneye başvuruda bulunan özelliğidir WorkflowElementDesigner ( bu örnekte, 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>
    
  • türüyle DesignerAttribute ilişkilendirmesini gerçekleştirin Parallel ve ardından bildirilen özniteliklerin çıkışını yapı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 yöntemindeki RegisterCustomMetadata paralel değeri 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 bkz.