Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Element System.Activities.Presentation.WorkflowItemsPresenter jest kluczowym typem w modelu programowania WF projektanta, który umożliwia edycję zawartej kolekcji elementów. W tym przykładzie pokazano, jak utworzyć projektanta działań, który przedstawia taką kolekcję edytowalną.
Przykład WorkflowItemsPresenter pokazuje:
Tworzenie niestandardowego projektanta działań za pomocą elementu System.Activities.Presentation.WorkflowItemsPresenter.
Tworzenie projektanta działań z widokiem "zwiniętym" i "rozwiniętym".
Przesłanianie domyślnego projektanta w aplikacji z ponownym hostingiem.
Konfigurowanie, kompilowanie i uruchamianie przykładu
Otwórz przykładowe rozwiązanie UsingWorkflowItemsPresenter.sln dla języka C# lub Visual Basic w programie Visual Studio.
Skompiluj i uruchom rozwiązanie.
Zostanie otwarta ponownie hostowana aplikacja projektanta przepływu pracy i możesz przeciągnąć działania na kanwę.
Przykładowe wyróżnienia
Kod dla tego przykładu przedstawia następujące elementy:
Działanie, do którego stworzono projektanta:
ParallelTworzenie niestandardowego projektanta działań z elementem System.Activities.Presentation.WorkflowItemsPresenter. Kilka rzeczy, które należy zwrócić uwagę:
Zwróć uwagę na użycie powiązania danych WPF w celu powiązania z elementem
ModelItem.Branches.ModelItemjest właściwościąWorkflowElementDesigner, która odwołuje się do bazowego obiektu używanego przez projektanta, w tym przypadku naszegoParallel.Element WorkflowItemsPresenter.SpacerTemplate może służyć do umieszczania wizualizacji w celu wyświetlenia między poszczególnymi elementami w kolekcji.
WorkflowItemsPresenter.ItemsPanel to szablon, który można podać w celu określenia układu elementów w kolekcji. W tym przypadku jest używany poziomy panel stosu.
Poniższy przykładowy kod to pokazuje.
<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>Skojarz
DesignerAttributez typemParallel, a następnie wyświetl zgłoszone atrybuty.Najpierw zarejestruj wszystkich domyślnych projektantów.
Poniżej przedstawiono przykład kodu.
// register metadata (new DesignerMetadata()).Register(); RegisterCustomMetadata();' register metadata Dim metadata = New DesignerMetadata() metadata.Register() ' register custom metadata RegisterCustomMetadata()Następnie zastąp równoległość w metodzie
RegisterCustomMetadata.Poniższy kod pokazuje to w językach C# i 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
Na koniec zwróć uwagę na użycie różnych szablonów danych i wyzwalaczy, aby na podstawie właściwości
IsRootDesignerwybrać odpowiedni szablon.Poniżej przedstawiono przykład kodu.
<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>