Rehostowanie projektanta
Projektant ponowne hostowanie to typowy scenariusz, który odnosi się do hostowania kanwy projektu przepływu pracy wewnątrz aplikacji niestandardowej. Aplikacja hostingowa, z której większość osób zna program Visual Studio, jednak istnieje wiele scenariuszy, w których wyświetlanie projektanta przepływu pracy w aplikacji może być przydatne:
Monitorowanie aplikacji (umożliwia użytkownikowi końcowemu wizualizowanie procesu, a także danych środowiska uruchomieniowego dotyczących procesu, takich jak aktualnie aktywny stan, agregowanie danych czasu wykonywania lub inne informacje o wystąpieniu przepływu pracy).
Aplikacje, które umożliwiają użytkownikowi dostosowanie procesu przy użyciu ograniczonego zestawu działań.
Aby obsługiwać te typy aplikacji, projektant przepływu pracy jest dostarczany wewnątrz programu .NET Framework i może być hostowany w aplikacji WPF lub w aplikacji WinForms z odpowiednim kodem hostingu WPF. W przykładzie Projektant Rehosting pokazano:
Ponowne hostowanie projektanta WF.
Używając również ponownie hostowanego przybornika i siatki właściwości.
Ponowne hostowanie projektanta
W tym przykładzie pokazano, jak utworzyć układ WPF zawierający projektanta widoczny w poniższym układzie siatki (kod przybornika pominięty w przypadku problemów z miejscem). Zanotuj nazewnictwo obramowań, które zawierają projektanta i siatkę właściwości.
<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>
Następnie przykład tworzy projektanta i kojarzy jego podstawowy View i PropertyInspectorView z odpowiednim kontenerem w interfejsie użytkownika. W poniższym przykładzie istnieje kilka dodatkowych wierszy kodu, które zasługują na wyjaśnienie. Wywołanie jest wymagane do skojarzenia Register domyślnych projektantów działań dla działań dostarczanych z programem .NET Framework. Load Element jest wywoływany w celu przekazania elementu WF do edycji. Na koniec (podstawowa View kanwa) i PropertyInspectorView (siatka właściwości) są umieszczane na powierzchni interfejsu użytkownika.
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;
}
Korzystanie z ponownie hostowanego przybornika
W tym przykładzie użyto kontrolki przybornika ponownie hostowanego deklaratywnie w języku XAML. Należy pamiętać, że w kodzie można przekazać typ do konstruktora 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>
Korzystanie z przykładu
Otwórz rozwiązanie Projektant Rehosting.sln w programie Visual Studio.
Naciśnij klawisz F5, aby skompilować i uruchomić aplikację.
Aplikacja WPF rozpoczyna się od ponownie hostowanego projektanta.