Versionen im Vergleich
Schlüssel
- Diese Zeile wurde hinzugefügt.
- Diese Zeile wurde entfernt.
- Formatierung wurde geändert.
Der ActivityDesigner sollte auf die darunterliegende Aktivität abgestimmt sein. Fügen Sie Ihren Projekt eine "Activity Designer"-Datei hinzu. Es handelt sich dabei um ein WPF-Control mit ein paar Besonderheiten:
Auf die Aktivität greifen Sie über das ModelItem-Property zu.
ermöglicht die Eingabe von VB-Ausdrücken für In/Out-Argumente
Aktivitäten werden über das DesignerAttribute mit dem Designer verknüpft.
Folgende Dinge sind zu beachten:
Der
Anwender sollte alle Argumente eingeben können, ohne dabei auf das Eigenschaften-Fenster zurückgreifen zu müssen
.
Die Reihenfolge der Argumente sollte deutlich sein :
InArgumente => In/Out-Argumente =>
OutArgumente
Labels und Beschreibungen der Argumente sollten lokalisiert verfügbar sein (Deutsch/Englisch).
Der Inhalt des Controls sollte einklappbar sein (Content-Presenter).
Hinweis für VB:
Namespaces werden in VB bei XAML Dateien nicht unterstützt, es wird für die Versionierung daher empfohlen die Version in den Namen einzubinden.
Image Modified
ActivityDesigner in VisualStudio anlegen
Beispiel für einen ActivityDesigner C#
Codeblock |
---|
|
| |
<sap:ActivityDesigner x:Class="Designer.HelloWorld.V01.HelloWorldDesigner" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Designer.HelloWorld.V01" xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" xmlns:converters="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation" xmlns:system="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> <sap:ActivityDesigner.Resources> <ResourceDictionary> <converters:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" /> <DataTemplate x:Key="CollapsedTemplate"> <Label Padding="0" Foreground="#FF6D6D6D" FontStyle="Italic" HorizontalAlignment="Center" VerticalAlignment="Center" Content="{x:Static res:Resources.CollapsedToolTip}"/> </DataTemplate> <DataTemplate x:Key="ExpandTemplate" DataType="{x:Type local:HelloWorldDesigner}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <!-- InArgumente und Eigenschaften ... --> <!-- Text --> <TextBlock Grid.Row="0" Grid.Column="0" Margin="0 10 0 0" Text="Text" ToolTip="Geben sie einen Text ein"/> <sap:ExpressionTextBox Margin="4" Grid.Row="0" Grid.Column="1" OwnerActivity="{Binding ModelItem}" ExpressionType="system:String" PathToArgument="Text" Expression="{Binding ModelItem.Text, Mode=TwoWay, Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In}"/> <!-- OutArgumente und Eigenschaften ... --> </Grid> </DataTemplate> <!-- Mechanismus, um die Aktivität auf und zuzuklappen--> <Style x:Key="ExpandOrCollapsedStyle" TargetType="{x:Type ContentPresenter}"> <Setter Property="ContentTemplate" Value="{StaticResource CollapsedTemplate}"/> <Style.Triggers> <DataTrigger Binding="{Binding Path=ShowExpanded}" Value="true"> <Setter Property="ContentTemplate" Value="{StaticResource ExpandTemplate}"/> </DataTrigger> </Style.Triggers> </Style> </ResourceDictionary> </sap:ActivityDesigner.Resources> <ContentPresenter Style="{StaticResource ExpandOrCollapsedStyle}" Content="{Binding}"/> </sap:ActivityDesigner> |
Code Behind C#
Codeblock |
---|
|
| |
namespace Designer.HelloWorld.V01
{
/// <summary>
/// Interaction logic for HelloWorld.xaml
/// </summary>
public partial class HelloWorldDesigner
{
public HelloWorldDesigner()
{
InitializeComponent();
}
}
} |
Beispiel für einen ActivityDesigner VB
Codeblock |
---|
|
| |
<sap:ActivityDesigner x:Class="HelloWorldDesignerV01" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Designer.HelloWorld.V01" xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation" xmlns:converters="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation" xmlns:system="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" Loaded="ActivityDesigner_Loaded"> <sap:ActivityDesigner.Resources> <ResourceDictionary> <converters:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" /> <DataTemplate x:Key="CollapsedTemplate"> <Label Padding="0" Foreground="#FF6D6D6D" FontStyle="Italic" HorizontalAlignment="Center" VerticalAlignment="Center" Content="Zum Anzeigen doppelklicken."/> </DataTemplate> <DataTemplate x:Key="ExpandTemplate" DataType="HelloWorldActivity:HelloWorldDesignerV01"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <!-- InArgumente und Eigenschaften ... --> <!-- Text --> <TextBlock Grid.Row="0" Grid.Column="0" Margin="0 10 0 0" Text="Text" ToolTip="Geben sie einen Text ein"/> <sapv:ExpressionTextBox Margin="4" Grid.Row="0" Grid.Column="1" OwnerActivity="{Binding ModelItem}" ExpressionType="system: |
String" PathToArgument="Text" Expression="{Binding ModelItem.Text, Mode=TwoWay, Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In}"/> <!-- OutArgumente und Eigenschaften ... --> </Grid> </DataTemplate> <!-- Mechanismus, um die Aktivität auf und zuzuklappen--> <Style x:Key="ExpandOrCollapsedStyle" TargetType="{x:Type ContentPresenter}"> <Setter Property="ContentTemplate" Value="{StaticResource CollapsedTemplate}"/> <Style.Triggers> <DataTrigger Binding="{Binding Path=ShowExpanded}" Value="true"> <Setter Property="ContentTemplate" Value="{StaticResource ExpandTemplate}"/> </DataTrigger> </Style.Triggers> </Style> </ResourceDictionary> </sap:ActivityDesigner.Resources> <ContentPresenter Style="{StaticResource ExpandOrCollapsedStyle}" Content="{Binding}"/> </sap:ActivityDesigner> |
Code Behind VB
Codeblock |
---|
|
|
Imports System.Activities.Presentation
Class HelloWorldDesigner01
Inherits ActivityDesigner
Private Sub ActivityDesigner_Loaded(sender As Object, e As RoutedEventArgs)
End Sub
End Class |
Testen des Designers
Den Designer können Sie testen, indem Sie Ihrem Projekt eine Activity-Xaml-Datei hinzufügen. (New Item > Workflow > Activity)
Hier können Sie nach einem Build Ihre Aktivität mit Drag&Drop aus der Toolbar ziehen und Ihren Designer überprüfen. Über das Eigenschaftsfenster von VisualStudio können Sie die Eigenschaften der Aktivität einsehen.
Anpassung des Designer an WMS über Resourcen aus der WmsActivityContracts.dll
Mit Hilfe der Klasse "Accantum.Wms.ActivityContracts.Theme.WmsActivityTheme" haben Sie Zugriff auf folgende Styles und Templates, die auch von anderen WMS-Aktivitäten genutzt werden.
Name | Beschreibung | TargetType / DataType |
---|---|---|
CollapsedTemplate | DataTemplate, für das Aussehen einer Aktivität, wenn sie zusammengeklappt ist. | - |
ActivityBodyStyle | Style für Aktivitäten mit Body (wie z.B. If Aktivität) (Rahmen um die Unteraktivitäten) | Border |
WorkflowItemPresenterStyle | Style für Aktivitäten mit Body (wie z.B. If Aktivität) (WorkflowItemPresenter für die Unteraktivitäten) | WorkflowItemPresenter |
ActivityDesignerStyle | Style für alle WMS-Aktivitäten (WmsCodeActivity, WmsNativeActivity, WmsAsyncCodeActivity). Beinhaltet unter anderem den Style, wenn die Aktivität auskommentiert ist, | ActivityDesigner |
ActivityDesigner mit Resourcen aus WmsActivityTheme
Codeblock | |
---|---|
|
title | Style für Workflow Item Presenter |
---|
| |
<sap:ActivityDesigner x:Class="ActivitySample.Activities.DemoNative.DemoNativeDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:sa="http://schemas.microsoft.com/netfx/2009/xaml/activities"
xmlns:demoNative="clr-namespace:ActivitySample.Activities.DemoNative"
xmlns:theme="clr-namespace:Accantum.Wms.ActivityContracts.Theme;assembly=WmsActivityContracts"
mc:Ignorable="d"
MaxWidth="500" d:DataContext="{d:DesignInstance demoNative:DemoNativeDesigner}"
Style="{x:Static theme:WmsActivityTheme.ActivityDesignerStyle}">
<sap:ActivityDesigner.Resources>
<DataTemplate x:Key="ExpandedTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="for" VerticalAlignment="Center" />
<TextBox Margin="7,0" MinWidth="70" Padding="0"
Text="{Binding Path=ModelItem.Body.Argument.Name, Mode=TwoWay}" />
<TextBlock Text="= 0 to 4" VerticalAlignment="Center" />
</StackPanel>
<Border Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" Style="{x:Static theme:WmsActivityTheme.ActivityBodyStyle}">
<sap:WorkflowItemPresenter Style="{x:Static theme:WmsActivityTheme.WorkflowItemPresenterStyle}"
AllowedItemType="{x:Type sa:Activity}"
Item="{Binding Path=ModelItem.Body.Handler, Mode=TwoWay}" />
</Border>
</Grid>
</DataTemplate>
<!-- Mechanismus, um die Aktivität auf und zuzuklappen-->
<Style x:Key="ExpandOrCollapsedStyle" TargetType="{x:Type ContentPresenter}">
<Setter Property="ContentTemplate" Value="{x:Static theme:WmsActivityTheme.CollapsedTemplate}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ShowExpanded}" Value="true">
<Setter Property="ContentTemplate" Value="{StaticResource ExpandedTemplate}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</sap:ActivityDesigner.Resources>
<ContentPresenter Style="{StaticResource ExpandOrCollapsedStyle}" Content="{Binding}"/>
</sap:ActivityDesigner> |
Panel | ||
---|---|---|
| ||
Image Removed |
Image Added