タスク 2: ワークフロー デザイナーのホスティング
このトピックの内容は、Windows Workflow Foundation 4 に該当します。
このトピックでは、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() { DesignerMetadata dm = new DesignerMetadata(); dm.Register(); }
登録アクティビティ デザイナー詳細情報、「方法: カスタム アクティビティ デザイナーを作成する」を参照してください。
MainWindow
クラス コンストラクターで、前に宣言したメソッドへの呼び出しを追加して、デザイナー サポートのメタデータを登録し、WorkflowDesigner を作成します。public MainWindow() { InitializeComponent(); // Register the metadata RegisterMetadata(); // Add the WFF Designer AddDesigner(); }
注 : RegisterMetadata
メソッドは、Sequence アクティビティを含むビルトイン アクティビティのデザイナーのメタデータを登録します。AddDesigner
メソッドは Sequence アクティビティを使用するので、RegisterMetadata
メソッドを先に呼び出す必要があります。
F5 キーを押して、ソリューションをビルドおよび実行します。
[ツールボックス] と [PropertyGrid] のサポートを、再ホストしたワークフロー デザイナーに追加する方法を学習するには、「タスク 3: ツールボックス ペインと PropertyGrid ペインの作成」を参照してください。
参照
処理手順
タスク 1: 新しい Windows Presentation Foundation アプリケーションの作成
タスク 3: ツールボックス ペインと PropertyGrid ペインの作成