Změna hostování návrháře
Změna hostitele návrháře je běžný scénář, který odkazuje na hostování plátna návrhu pracovního postupu uvnitř vlastní aplikace. Hostitelská aplikace, kterou většina lidí zná, je Visual Studio, ale existuje řada scénářů, ve kterých může být užitečné zobrazit návrháře pracovních postupů v aplikaci:
Monitorování aplikací (umožňující koncovému uživateli vizualizovat proces a také data modulu runtime o procesu, jako je aktuálně aktivní stav, agregovaná data doby provádění nebo jiné informace o instanci pracovního postupu).
Aplikace, které uživateli umožňují přizpůsobit proces s omezenou sadou aktivit.
Pro podporu těchto typů aplikací se návrhář pracovních postupů dodává uvnitř rozhraní .NET Framework a může být hostovaný v aplikaci WPF nebo v aplikaci WinForms s odpovídajícím hostitelským kódem WPF. Ukázka DesignerRehosting ukazuje:
Změna hostitele návrháře WF
Použití re hostované sady nástrojů a mřížky vlastností.
Změna hostitele návrháře
Tato ukázka ukazuje, jak vytvořit rozložení WPF, které bude obsahovat návrháře, jak je vidět v následujícím rozložení mřížky (kód panelu nástrojů vynechán kvůli obavám o místo). Všimněte si pojmenování ohraničení, která obsahují návrháře a mřížku vlastností.
<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>
Potom ukázka vytvoří návrháře a přidruží jeho primární View a PropertyInspectorView odpovídající kontejner v uživatelském rozhraní. V následujícím příkladu je několik dalších řádků kódu, které si zaslouží vysvětlení. Volání Register je nutné k přidružení výchozích návrhářů aktivit pro aktivity dodávané s rozhraním .NET Framework. Load je volána pro předání položky WF, která má být upravena. View Nakonec se na plochu uživatelského rozhraní umístí (primární plátno) a PropertyInspectorView (mřížka vlastností).
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;
}
Použití panelu nástrojů s pře hostovanými prostředím
Tato ukázka používá re hostovaný ovládací prvek panelu nástrojů deklarativní v jazyce XAML. Všimněte si, že v kódu lze předat typ konstruktoru ToolboxItemWrapper .
<!-- 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>
Použití ukázky
Otevřete řešení DesignerRehosting.sln v sadě Visual Studio.
Stisknutím klávesy F5 aplikaci zkompilujte a spusťte.
Aplikace WPF začíná znovu hostovaným návrhářem.