タスク 2:ワークフロー デザイナーのホスティング
このトピックでは、Windows Presentation Foundation (WPF) アプリケーションで Windows ワークフロー デザイナーのインスタンスをホストする手順について説明します。
この手順では、デザイナーを格納する Grid コントロールを構成し、既定の Sequence アクティビティを含む WorkflowDesigner のインスタンスをプログラムで作成します。さらに、デザイナーのメタデータを登録して、すべてのビルトイン アクティビティにデザイナーのサポートを追加し、WPF アプリケーションでワークフロー デザイナーをホストします。
ワークフロー デザイナーをホストするには
「タスク 1: 新しい Windows Presentation Foundation アプリケーションの作成」で作成した HostingApplication プロジェクトを開きます。
ワークフロー デザイナーが見やすくなるように、ウィンドウのサイズを調整します。 このためには、デザイナーで [MainWindow] を選択し、F4 キーを押して [プロパティ] ウィンドウを表示し、レイアウト セクションで [幅] の値を「600」に設定し、 [高さ] の値を「350」に設定します。
グリッド名を設定します。このためには、デザイナーで [グリッド] パネルを選択し ( [MainWindow] 内のボックスをクリックします)、 [プロパティ] ウィンドウの一番上にある Name プロパティを「grid1」に設定します。
[プロパティ] ウィンドウで、
ColumnDefinitions
プロパティの横の省略記号 ( [...] ) をクリックして [コレクション エディター] ダイアログ ボックスを開きます。[コレクション エディター] ダイアログ ボックスの [追加] ボタンを 3 回クリックして、3 つの列をレイアウトに挿入します。 最初の列には [ツールボックス] が含まれ、2 番目の列はワークフロー デザイナーをホストし、3 番目の列はプロパティ インスペクターに使用されます。
中央の列の
Width
プロパティの値を「4*」に設定します。[OK] をクリックして変更を保存します。 次の XAML が MainWindow.xaml ファイルに追加されます。
<Grid Name="grid1"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="4*" /> <ColumnDefinition /> </Grid.ColumnDefinitions> </Grid>
ソリューション エクスプローラーで MainWindow.xaml を右クリックし、 [コードの表示] を選択します。 次の手順に従ってコードを修正します。
次の名前空間を追加します。
using System.Activities; using System.Activities.Core.Presentation; using System.Activities.Presentation; using System.Activities.Presentation.Metadata; using System.Activities.Presentation.Toolbox; using System.Activities.Statements; using System.ComponentModel;
WorkflowDesigner のインスタンスを保持するプライベート メンバー フィールドを宣言するには、次のコードを
MainWindow
クラスに追加します。public partial class MainWindow : Window { private WorkflowDesigner wd; public MainWindow() { InitializeComponent(); } }
次の
AddDesigner
メソッドをMainWindow
クラスに追加します。 この実装で、WorkflowDesigner のインスタンスを作成し、これに Sequence アクティビティを追加して、grid1 グリッドの中央の列に配置します。private void AddDesigner() { // Create an instance of WorkflowDesigner class. this.wd = new WorkflowDesigner(); // Place the designer canvas in the middle column of the grid. Grid.SetColumn(this.wd.View, 1); // Load a new Sequence as default. this.wd.Load(new Sequence()); // Add the designer canvas to the grid. grid1.Children.Add(this.wd.View); }
デザイナーのメタデータを登録して、すべてのビルトイン アクティビティにデザイナー サポートを追加します。 こうすることにより、ツールボックスからワークフロー デザイナーの元の Sequence アクティビティに、アクティビティをドロップできるようになります。 このためには、
RegisterMetadata
メソッドをMainWindow
クラスに追加します。private void RegisterMetadata() { var dm = new DesignerMetadata(); dm.Register(); }
アクティビティ デザイナーの登録の詳細については、「方法: カスタム アクティビティ デザイナーを作成する」を参照してください。
MainWindow
クラス コンストラクターで、前に宣言したメソッドへの呼び出しを追加して、デザイナー サポートのメタデータを登録し、WorkflowDesigner を作成します。public MainWindow() { InitializeComponent(); // Register the metadata. RegisterMetadata(); // Add the WFF Designer. AddDesigner(); }
F5 キーを押して、ソリューションをビルドおよび実行します。
再ホストされたワークフロー デザイナーにツールボックスと PropertyGrid のサポートを追加する方法については、「タスク 3: ツールボックス ペインと PropertyGrid ペインの作成」を参照してください。
関連項目
.NET