設計工具重新裝載
設計工具重新裝載是在自訂應用程式中裝載工作流程設計畫布的一般案例。 大多數人熟悉的裝載應用程式是 Visual Studio,但在一些情況下,在應用程式中顯示工作流程設計工具可能很有用:
監視應用程式 (讓終端使用者視覺化處理序,以及有關處理序的執行階段資料,例如目前作用中狀態、彙總執行時間資料,或有關工作流程執行個體的其他資訊)。
讓使用者以有限活動集來自訂處理序的應用程式。
為了支援這些類型的應用程式,.NET Framework 隨附工作流程設計工具,該設計工具可裝載於 WPF 應用程式或具有適當 WPF 裝載程式碼的 WinForms 應用程式。 DesignerRehosting 範例示範:
重新裝載 WF 設計工具。
使用重新裝載的工具箱以及屬性方格。
重新裝載設計工具
這個範例示範如何建立 WPF 配置以包含設計工具,如下列方格配置所示 (基於空間考量而省略工具箱程式碼)。 請注意包含設計工具和屬性方格之框線的命名。
<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>
範例接著建立設計工具,並且將其主要 View 和 PropertyInspectorView 與使用者介面中的適當容器產生關聯。 在下列範例中有些其他程式碼行需要說明。 Register 呼叫必須為 .NET Framework 隨附的活動建立預設活動設計工具的關聯。 會呼叫 Load 以傳入所要編輯的 WF 項目。 最後,View (主要畫布) 和 PropertyInspectorView (屬性方格) 會放在使用者介面上。
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;
}
使用重新裝載的工具列
這個範例在 XAML 中以宣告方式使用重新裝載的工具箱控制項。 請注意,在程式碼中可將類型傳遞給 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>
使用範例
在 Visual Studio 中開啟 DesignerRehosting.sln 解決方案。
按 F5 編譯和執行應用程式。
WPF 應用程式隨即以重新裝載的設計工具啟動。