Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Der Activity-Designer

Der ActivityDesigner sollte auf die darunterliegende Aktivität abgestimmt sein.

  • Auf die Aktivität greifen Sie über das ModelItem-Property zu.
  • Das ExpressionTextBox-Control 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

wichtig

zu beachten: 

  • 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).

    Image Added
    (ActivityDesigner in VisualStudio anlegen)


    Codeblock
    languagexml
    titleBeispiel eines Designers
    linenumberstrue
    collapsetrue
    <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"
                                            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>




    Codeblock
    languagec#
    titleCode Behind
    linenumberstrue
    collapsetrue
    namespace Designer.HelloWorld.V01
    {
        /// <summary>
        /// Interaction logic for HelloWorld.xaml
        /// </summary>
        public partial class HelloWorldDesigner
        {
            public HelloWorldDesigner()
            {
                InitializeComponent();
            }
        }
    }


    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.