Dela via


Designern byter värd

Designerns värdskap är ett vanligt scenario som refererar till att vara värd för arbetsytan för arbetsflödesdesign i ett anpassat program. Värdprogrammet som de flesta känner till är Visual Studio, men det finns ett antal scenarier där det kan vara användbart att visa arbetsflödesdesignern i ett program:

  • Övervaka program (så att en slutanvändare kan visualisera processen, samt körningsdata om processen, till exempel det aktuella aktiva tillståndet, aggregerade körningstidsdata eller annan information om en instans av arbetsflödet).

  • Program som gör det möjligt för en användare att anpassa processen med en begränsad uppsättning aktiviteter.

För att stödja dessa typer av program levereras arbetsflödesdesignern i .NET Framework och kan finnas i ett WPF-program eller i ett WinForms-program med lämplig WPF-värdkod. Exemplet DesignerRehosting visar:

  • Byta värd för WF-designern.

  • Använda den omvärdade verktygslådan och egenskapsrutnätet.

Byta värd för designern

Det här exemplet visar hur du skapar WPF-layouten som ska innehålla designern, som visas i följande rutnätslayout (Verktygslådekod utelämnas för utrymmesproblem). Observera namngivningen av kantlinjerna som innehåller designer- och egenskapsrutnätet.

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*"/>
        <ColumnDefinition Width="7*"/>
        <ColumnDefinition Width="3*"/>
    </Grid.ColumnDefinitions>
    <Border Grid.Column="0">
        <sapt:ToolboxControl>...</sapt:ToolboxControl>
    </Border>
    <Border Grid.Column="1" Name="DesignerBorder"/>
    <Border Grid.Column="2" Name="PropertyBorder"/>
</Grid>

Därefter skapar exemplet designern och associerar dess primära View och PropertyInspectorView med lämplig container i användargränssnittet. Det finns några ytterligare kodrader i följande exempel som förtjänar en förklaring. Anropet Register krävs för att associera standardaktivitetsdesigners för de aktiviteter som levereras med .NET Framework. Load anropas för att skicka in det WF-objekt som ska redigeras. Slutligen placeras (primär View arbetsyta) och PropertyInspectorView (egenskapsrutnät) på användargränssnittets yta.

protected override void OnInitialized(EventArgs e)
{
   base.OnInitialized(e);
   // register metadata
   (new DesignerMetadata()).Register();

   // create the workflow designer
   WorkflowDesigner wd = new WorkflowDesigner();
   wd.Load(new Sequence());
   DesignerBorder.Child = wd.View;
   PropertyBorder.Child = wd.PropertyInspectorView;
}

Använda den omvärdade verktygslådan

Det här exemplet använder den omvärdade verktygslådekontrollen deklarativt i XAML. Observera att i kod kan man skicka en typ till ToolboxItemWrapper konstruktorn.

<!-- Copyright (c) Microsoft Corporation. All rights reserved-->
<Window x:Class="Microsoft.Samples.DesignerRehosting.RehostingWfDesigner"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sapt="clr-namespace:System.Activities.Presentation.Toolbox;assembly=System.Activities.Presentation"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        Title="Window1" Height="600" Width="900">
    <Window.Resources>
        <sys:String x:Key="AssemblyName">System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</sys:String>
    </Window.Resources>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="7*"/>
            <ColumnDefinition Width="3*"/>
        </Grid.ColumnDefinitions>
        <Border Grid.Column="0">
            <sapt:ToolboxControl>
                <sapt:ToolboxCategory CategoryName="Basic">
                    <sapt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}" >
                        <sapt:ToolboxItemWrapper.ToolName>
                            System.Activities.Statements.Sequence
                        </sapt:ToolboxItemWrapper.ToolName>
                       </sapt:ToolboxItemWrapper>
                    <sapt:ToolboxItemWrapper  AssemblyName="{StaticResource AssemblyName}">
                        <sapt:ToolboxItemWrapper.ToolName>
                            System.Activities.Statements.WriteLine
                        </sapt:ToolboxItemWrapper.ToolName>

                    </sapt:ToolboxItemWrapper>
                    <sapt:ToolboxItemWrapper  AssemblyName="{StaticResource AssemblyName}">
                        <sapt:ToolboxItemWrapper.ToolName>
                            System.Activities.Statements.If
                        </sapt:ToolboxItemWrapper.ToolName>

                    </sapt:ToolboxItemWrapper>
                    <sapt:ToolboxItemWrapper  AssemblyName="{StaticResource AssemblyName}">
                        <sapt:ToolboxItemWrapper.ToolName>
                            System.Activities.Statements.While
                        </sapt:ToolboxItemWrapper.ToolName>

                    </sapt:ToolboxItemWrapper>
                </sapt:ToolboxCategory>
            </sapt:ToolboxControl>
        </Border>
        <Border Grid.Column="1" Name="DesignerBorder"/>
        <Border Grid.Column="2" Name="PropertyBorder"/>
    </Grid>
</Window>

Använda exemplet

  1. Öppna lösningen DesignerRehosting.sln i Visual Studio.

  2. Tryck på F5 för att kompilera och köra programmet.

  3. Ett WPF-program börjar med en omvärderad designer.