次の方法で共有


タスク 3: ツールボックス ペインと PropertyGrid ペインの作成

このトピックの内容は、Windows Workflow Foundation 4 に該当します。

このタスクでは、ツールボックス ペインと PropertyGrid ペインを作成し、ホストを変更した Windows ワークフロー デザイナーに追加します。

参照用として、「ワークフロー デザイナーのホスト変更」のトピック シリーズで 3 つのタスクを完了した後に MainWindow.xaml.cs ファイルに示されるコードをこのトピックの最後に示します。

ツールボックスを作成し、グリッドに追加するには

  1. タスク 2: ワークフロー デザイナーのホスティング」で説明されている手順に従って取得した HostingApplication プロジェクトを開きます。

  2. ソリューション エクスプローラー ペインで、MainWindow.xaml ファイルを右クリックし、[コードの表示] をクリックします。

  3. ToolboxControl を作成する GetToolboxControl メソッドを MainWindow クラスに追加し、新しい Toolbox カテゴリを Toolbox に追加し、Assign および Sequence アクティビティの種類をそのカテゴリに割り当てます。

    private ToolboxControl GetToolboxControl()
    {
        // Create the ToolBoxControl.
        ToolboxControl ctrl = new ToolboxControl();
    
        // Create a category.
        ToolboxCategory category = new ToolboxCategory("category1");
    
        // Create Toolbox items.
        ToolboxItemWrapper tool1 = 
            new ToolboxItemWrapper("System.Activities.Statements.Assign", 
            typeof(Assign).Assembly.FullName, null, "Assign");
    
        ToolboxItemWrapper tool2 = new ToolboxItemWrapper("System.Activities.Statements.Sequence", 
            typeof(Sequence).Assembly.FullName, null, "Sequence");
    
        // Add the Toolbox items to the category.
        category.Add(tool1);
        category.Add(tool2);
    
        // Add the category to the ToolBox control.
        ctrl.Categories.Add(category);
        return ctrl;
    }
    
  4. グリッドの左の列に Toolbox を配置する AddToolbox プライベート メソッドを MainWindow クラスに追加します。

    private void AddToolBox()
    {
        ToolboxControl tc = GetToolboxControl();
        Grid.SetColumn(tc, 0);
        grid1.Children.Add(tc);
    }
    
  5. 次のコードのように、MainWindow() クラス コンストラクターに AddToolBox メソッドへの呼び出しを追加します。

    public MainWindow()
    {
        InitializeComponent();
        this.RegisterMetadata();
        this.AddDesigner();
    
        this.AddToolBox();
    }
    
  6. F5 キーを押して、ソリューションをビルドおよび実行します。Assign アクティビティおよび Sequence を含む [ツールボックス] が表示されます。

PropertyGrid を作成するには

  1. ソリューション エクスプローラー ペインで、MainWindow.xaml ファイルを右クリックし、[コードの表示] をクリックします。

  2. MainWindow クラスに AddPropertyInspector メソッドを追加して、グリッドの最も右側の列に PropertyGrid ペインを配置します。

    private void AddPropertyInspector()
    {
        Grid.SetColumn(wd.PropertyInspectorView, 2);
        grid1.Children.Add(wd.PropertyInspectorView);            
    }
    
  3. 次のコードのように、MainWindow() クラス コンストラクターに AddPropertyInspector メソッドへの呼び出しを追加します。

    public MainWindow()
    {
        InitializeComponent();
        this.RegisterMetadata();
        this.AddDesigner();
        this.AddToolBox();
    
        this.AddPropertyInspector(); 
    }
    
  4. F5 キーを押して、ソリューションをビルドおよび実行します。Toolbox、ワークフロー デザイン キャンバス、および PropertyGrid の各ペインがすべて表示されます。また、Assign アクティビティまたは Sequence アクティビティをデザイン キャンバスにドラッグすると、選択されているアクティビティに応じてプロパティ グリッドが更新されます。

MainWindow.xaml.cs ファイルに次のコードが含まれます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
//dlls added
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;


namespace HostingApplication
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private WorkflowDesigner wd;

        public MainWindow()
        {
            InitializeComponent();
            RegisterMetadata();
            AddDesigner();
            this.AddToolBox();
            this.AddPropertyInspector();
        }

        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);
        }

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

        private ToolboxControl GetToolboxControl()
        {
            // Create the ToolBoxControl.
            ToolboxControl ctrl = new ToolboxControl();

            // Create a category.
            ToolboxCategory category = new ToolboxCategory("category1");

            // Create Toolbox items.
            ToolboxItemWrapper tool1 =
                new ToolboxItemWrapper("System.Activities.Statements.Assign",
                typeof(Assign).Assembly.FullName, null, "Assign");

            ToolboxItemWrapper tool2 = new ToolboxItemWrapper("System.Activities.Statements.Sequence",
                typeof(Sequence).Assembly.FullName, null, "Sequence");

            // Add the Toolbox items to the category.
            category.Add(tool1);
            category.Add(tool2);

            // Add the category to the ToolBox control.
            ctrl.Categories.Add(category);
            return ctrl;
        }

        private void AddToolBox()
        {
            ToolboxControl tc = GetToolboxControl();
            Grid.SetColumn(tc, 0);
            grid1.Children.Add(tc);
        }

        private void AddPropertyInspector()
        {
            Grid.SetColumn(wd.PropertyInspectorView, 2);
            grid1.Children.Add(wd.PropertyInspectorView);
        }


    }
}

参照

処理手順

タスク 1: 新しい Windows Presentation Foundation アプリケーションの作成
タスク 2: ワークフロー デザイナーのホスティング

その他のリソース

ワークフロー デザイナーのホスト変更