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
Öppna lösningen DesignerRehosting.sln i Visual Studio.
Tryck på F5 för att kompilera och köra programmet.
Ett WPF-program börjar med en omvärderad designer.