次の方法で共有


タスク 2:ワークフロー デザイナーのホスティング

このトピックでは、Windows Presentation Foundation (WPF) アプリケーションで Windows ワークフロー デザイナーのインスタンスをホストする手順について説明します。

この手順では、デザイナーを格納する Grid コントロールを構成し、既定の Sequence アクティビティを含む WorkflowDesigner のインスタンスをプログラムで作成します。さらに、デザイナーのメタデータを登録して、すべてのビルトイン アクティビティにデザイナーのサポートを追加し、WPF アプリケーションでワークフロー デザイナーをホストします。

ワークフロー デザイナーをホストするには

  1. タスク 1: 新しい Windows Presentation Foundation アプリケーションの作成」で作成した HostingApplication プロジェクトを開きます。

  2. ワークフロー デザイナーが見やすくなるように、ウィンドウのサイズを調整します。 このためには、デザイナーで [MainWindow] を選択し、F4 キーを押して [プロパティ] ウィンドウを表示し、レイアウト セクションで [幅] の値を「600」に設定し、 [高さ] の値を「350」に設定します。

  3. グリッド名を設定します。このためには、デザイナーで [グリッド] パネルを選択し ( [MainWindow] 内のボックスをクリックします)、 [プロパティ] ウィンドウの一番上にある Name プロパティを「grid1」に設定します。

  4. [プロパティ] ウィンドウで、ColumnDefinitions プロパティの横の省略記号 ( [...] ) をクリックして [コレクション エディター] ダイアログ ボックスを開きます。

  5. [コレクション エディター] ダイアログ ボックスの [追加] ボタンを 3 回クリックして、3 つの列をレイアウトに挿入します。 最初の列には [ツールボックス] が含まれ、2 番目の列はワークフロー デザイナーをホストし、3 番目の列はプロパティ インスペクターに使用されます。

  6. 中央の列の Width プロパティの値を「4*」に設定します。

  7. [OK] をクリックして変更を保存します。 次の XAML が MainWindow.xaml ファイルに追加されます。

    <Grid Name="grid1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition Width="4*" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
    </Grid>
    
  8. ソリューション エクスプローラーMainWindow.xaml を右クリックし、 [コードの表示] を選択します。 次の手順に従ってコードを修正します。

    1. 次の名前空間を追加します。

      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;
      
    2. WorkflowDesigner のインスタンスを保持するプライベート メンバー フィールドを宣言するには、次のコードを MainWindow クラスに追加します。

      public partial class MainWindow : Window
      {
          private WorkflowDesigner wd;
      
          public MainWindow()
          {
              InitializeComponent();
          }
      }
      
    3. 次の 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);
      }
      
    4. デザイナーのメタデータを登録して、すべてのビルトイン アクティビティにデザイナー サポートを追加します。 こうすることにより、ツールボックスからワークフロー デザイナーの元の Sequence アクティビティに、アクティビティをドロップできるようになります。 このためには、RegisterMetadata メソッドを MainWindow クラスに追加します。

      private void RegisterMetadata()
      {
          var dm = new DesignerMetadata();
          dm.Register();
      }
      

      アクティビティ デザイナーの登録の詳細については、「方法: カスタム アクティビティ デザイナーを作成する」を参照してください。

    5. MainWindow クラス コンストラクターで、前に宣言したメソッドへの呼び出しを追加して、デザイナー サポートのメタデータを登録し、WorkflowDesigner を作成します。

      public MainWindow()
      {
          InitializeComponent();
      
          // Register the metadata.
          RegisterMetadata();
      
          // Add the WFF Designer.
          AddDesigner();
      }
      

      注意

      RegisterMetadata メソッドは、Sequence アクティビティを含むビルトイン アクティビティのデザイナーのメタデータを登録します。 AddDesigner メソッドは Sequence アクティビティを使用するので、RegisterMetadata メソッドを先に呼び出す必要があります。

  9. F5 キーを押して、ソリューションをビルドおよび実行します。

  10. 再ホストされたワークフロー デザイナーにツールボックスPropertyGrid のサポートを追加する方法については、「タスク 3: ツールボックス ペインと PropertyGrid ペインの作成」を参照してください。

関連項目