Der Activity-Designer sollte auf die darunterliegende Aktivität abgestimmt sein.
Folgende Dinge sind wichtig:
- Der Workflow-Designer sollte In-Argumente eingeben können, ohne dabei auf das Eigenschaften-Fenster zurückgreifen zu müssen.
- Alle für die Aktivität nötigen Argumente sollten im Designer eingegeben werden können.
- Die Reihenfolge der Argumente sollte deutlich sein : In-Argumente => In/Out-Argumente => Out-Argumente
- Labels und Beschreibungen der Argumente sollten lokalisiert verfügbar sein (Deutsch/Englisch).
- Für komplexe Eingaben (z.B. Datei-Pfad) sollten Hilfen wie z.B. der Datei-Explorer verwendet werden.
- Der Inhalt des Controls sollte einklappbar sein (Content-Presenter).
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
<sap:ActivityDesigner x:Class="WmsDeveloperActivities.Designer.GetCurrentWeatherHelloWorld.V01.GetCurrentWeatherDesignerHelloWorldDesigner" 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:WmsDeveloperActivities.Designer.GetCurrentWeatherHelloWorld.V01" xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" xmlns:res="clr-namespace:WmsDeveloperActivities.Properties" xmlns:converters="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation" xmlns:system="clr-namespace:System;assembly=mscorlib" xmlns:getCurrentWeather="clr-namespace:WmsDeveloperActivities.GetCurrentWeather" 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:GetCurrentWeatherDesignerHelloWorldDesigner}"> <Grid> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <!-- InArgumente und Eigenschaften ... --> <!-- City / Postal CodeText --> <TextBlock Grid.Row="0" Grid.Column="0" Margin="0 10 0 0" Text="{x:Static res:Resources.City}" ToolTip="{x:Static res:Resources.GetCurrentWeather_CityDesc}"/> <sap:ExpressionTextBox Margin="4" Grid.Row="0" Grid.Column="1" OwnerActivity="{Binding ModelItem}" ExpressionType="system:String" Expression="{Binding ModelItem.City, Mode=TwoWay, Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In}"/> <!-- Is Postal Code --> <TextBlock Grid.Row="1" Grid.Column="0" Margin="0 10 0 0" Text="{x:Static res:Resources.IsPostCode}" ToolTip="{x:Static res:Resources.GetCurrentWeather_IsPostCodeDesc}"/> <CheckBox Margin="4" Grid.Row="1" Grid.Column="1" IsChecked="{Binding ModelItem.IsPostCode, Mode=TwoWay}"/> <!-- Weather Api Setting Data --> <TextBlock Grid.Row="2" Grid.Column="0" Margin="0 10 0 0" Text="{x:Static res:Resources.WeatherApiSetting}" ToolTip="{x:Static res:Resources.GetCurrentWeather_WeatherApiSettingDesc}Geben sie einen Text ein"/> <sap:ExpressionTextBox Margin="4" Grid.Row="20" Grid.Column="1" OwnerActivity="{Binding ModelItem}" ExpressionType="system:String" Expression="{Binding ModelItem.WeatherApiSettingDataText, Mode=TwoWay, Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In}"/> <Separator Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2"></Separator> <!-- Output: WeatherInfo --> <TextBlock Grid.Row="4" Grid.Column="0" Margin="0 10 0 0" Text="{x:Static res:Resources.WeatherInfo}" ToolTip="{x:Static res:Resources.GetCurrentWeather_WeatherInfoDesc}"/> <sap:ExpressionTextBox Margin="4" Grid.Row="4" Grid.Column="1" OwnerActivity="{Binding ModelItem}" ExpressionType="getCurrentWeather:WmsWeatherInfo" UseLocationExpression="True" Expression="{Binding ModelItem.WeatherInfo, Mode=TwoWay, Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=Out}"/> <!-- 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> |