Ö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
Visual Studio'da C# veya Visual Basic için UsingWorkflowItemsPresenter.sln örnek çözümünü açın.
Çö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ğidirWorkflowElementDesigner
( bu örnekte, bizimParallel
., 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ştirinParallel
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>