Bagikan melalui


Tugas 3: Membuat Kotak alat dan Panel PropertyGrid

Dalam tugas ini, Anda akan membuat panel Toolbox dan PropertyGrid dan menambahkannya ke Perancang Alur Kerja Windows yang dihosting ulang.

Sebagai referensi, kode yang seharusnya ada di file MainWindow.xaml.cs setelah menyelesaikan tiga tugas dalam rangkaian topik Menghosting Ulang Perancang Alur Kerja disediakan di akhir topik ini.

Untuk membuat Toolbox dan menambahkannya ke grid

  1. Buka proyek Aplikasi Hosting yang Anda peroleh dengan mengikuti prosedur yang dijelaskan dalam Tugas 2: Menghosting Perancang Alur Kerja.

  2. Di panel Penjelajah Solusi, klik kanan file MainWindow.xaml dan pilih Tampilkan Kode.

  3. Tambahkan metode GetToolboxControl ke kelas MainWindow yang membuat ToolboxControl, tambahkan kategori Toolbox baru ke Toolbox, dan tetapkan Assign dan Sequence jenis aktivitas untuk kategori tersebut.

    private ToolboxControl GetToolboxControl()
    {
        // Create the ToolBoxControl.
        var ctrl = new ToolboxControl();
    
        // Create a category.
        var category = new ToolboxCategory("category1");
    
        // Create Toolbox items.
        var tool1 =
            new ToolboxItemWrapper("System.Activities.Statements.Assign",
            typeof(Assign).Assembly.FullName, null, "Assign");
    
        var 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. Tambahkan metode AddToolbox pribadi ke kelas MainWindow yang menempatkan Toolbox di kolom kiri pada kisi.

    private void AddToolBox()
    {
        ToolboxControl tc = GetToolboxControl();
        Grid.SetColumn(tc, 0);
        grid1.Children.Add(tc);
    }
    
  5. Tambahkan panggilan ke metode AddToolBox di konstruktor kelas MainWindow() seperti yang ditunjukkan pada kode berikut:

    public MainWindow()
    {
        InitializeComponent();
        this.RegisterMetadata();
        this.AddDesigner();
    
        this.AddToolBox();
    }
    
  6. Tekan F5 untuk membangun dan menjalankan solusi Anda. Toolbox yang berisi aktivitas Assign dan Sequence harus ditampilkan.

Untuk membuat PropertyGrid

  1. Di panel Penjelajah Solusi, klik kanan file MainWindow.xaml dan pilih Tampilkan Kode.

  2. Tambahkan metode AddPropertyInspector ke kelas MainWindow untuk menempatkan panel PropertyGrid di kolom paling kanan pada kisi:

    private void AddPropertyInspector()
    {
        Grid.SetColumn(wd.PropertyInspectorView, 2);
        grid1.Children.Add(wd.PropertyInspectorView);
    }
    
  3. Tambahkan panggilan ke metode AddPropertyInspector di konstruktor kelas MainWindow() seperti yang ditunjukkan pada kode berikut:

    public MainWindow()
    {
        InitializeComponent();
        this.RegisterMetadata();
        this.AddDesigner();
        this.AddToolBox();
    
        this.AddPropertyInspector();
    }
    
  4. Tekan F5 untuk membuat dan menjalankan solusi. Toolbox, kanvas desain alur kerja, dan panel PropertyGrid semuanya harus ditampilkan, dan saat Anda menarik aktivitas Assign atau aktivitas Sequence ke kanvas desain, kisi properti harus diperbarui tergantung pada aktivitas yang disorot.

Contoh

Berkas MainWindow.xaml.cs sekarang harus berisi kode berikut:

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()
        {
            var dm = new DesignerMetadata();
            dm.Register();
        }

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

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

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

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

    }
}

Lihat juga