Attività 3: Creare i riquadri Casella degli strumenti e PropertyGrid

In questa attività si creeranno i riquadri Casella degli strumenti e PropertyGrid e li si aggiungerà all'Designer flusso di lavoro di Windows rehosted.

Per informazioni di riferimento, il codice che deve trovarsi nel file MainWindow.xaml.cs dopo aver completato le tre attività nel flusso di lavoro Designer serie di argomenti viene fornito alla fine di questo argomento.

Per creare la casella degli strumenti e aggiungerla alla griglia

  1. Aprire il progetto HostingApplication ottenuto seguendo la procedura descritta nell'attività 2: Ospitare il flusso di lavoro Designer.

  2. Nel riquadro Esplora soluzioni fare clic con il pulsante destro del mouse sul file MainWindow.xaml e scegliere Visualizza codice.

  3. Aggiungere un metodo alla MainWindow classe che crea un GetToolboxControlToolboxControloggetto , aggiunge una nuova categoria casella degli strumenti alla casella degli strumenti e assegna i Assign tipi di attività e Sequence a tale categoria.

    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. Aggiungere un metodo privato AddToolbox alla MainWindow classe che inserisce la casella degli strumenti nella colonna sinistra nella griglia.

    private void AddToolBox()
    {
        ToolboxControl tc = GetToolboxControl();
        Grid.SetColumn(tc, 0);
        grid1.Children.Add(tc);
    }
    
  5. Aggiungere una chiamata al AddToolBox metodo nel costruttore della MainWindow() classe, come illustrato nel codice seguente:

    public MainWindow()
    {
        InitializeComponent();
        this.RegisterMetadata();
        this.AddDesigner();
    
        this.AddToolBox();
    }
    
  6. Premere F5 per compilare ed eseguire la soluzione. La casella degli strumenti contenente le Assign attività e Sequence deve essere visualizzata.

Per creare il riquadro PropertyGrid

  1. Nel riquadro Esplora soluzioni fare clic con il pulsante destro del mouse sul file MainWindow.xaml e scegliere Visualizza codice.

  2. Aggiungere il metodo alla MainWindow classe per posizionare il AddPropertyInspector riquadro PropertyGrid nella colonna più a destra nella griglia:

    private void AddPropertyInspector()
    {
        Grid.SetColumn(wd.PropertyInspectorView, 2);
        grid1.Children.Add(wd.PropertyInspectorView);
    }
    
  3. Aggiungere una chiamata al AddPropertyInspector metodo nel costruttore della MainWindow() classe, come illustrato nel codice seguente:

    public MainWindow()
    {
        InitializeComponent();
        this.RegisterMetadata();
        this.AddDesigner();
        this.AddToolBox();
    
        this.AddPropertyInspector();
    }
    
  4. Premere F5 per compilare ed eseguire la soluzione. I riquadri Casella degli strumenti, area di disegno del flusso di lavoro e PropertyGrid devono essere visualizzati e quando si trascina un'attività o un'attività AssignSequence nell'area di disegno di progettazione, la griglia delle proprietà deve essere aggiornata a seconda dell'attività evidenziata.

Esempio

Il file MainWindow.xaml.cs deve ora contenere il codice seguente:

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

    }
}

Vedi anche