Zum Ende der Metadaten springen
Zum Anfang der Metadaten
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).
<sap:ActivityDesigner x:Class="WmsDeveloperActivities.Designer.GetCurrentWeather.V01.GetCurrentWeatherDesigner"
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.GetCurrentWeather.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:GetCurrentWeatherDesigner}">
<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 Code -->
<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}"/>
<sap:ExpressionTextBox Margin="4" Grid.Row="2" Grid.Column="1" OwnerActivity="{Binding ModelItem}"
ExpressionType="system:String"
Expression="{Binding ModelItem.WeatherApiSettingData, 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>