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
Aprire il progetto HostingApplication ottenuto seguendo la procedura descritta nell'attività 2: Ospitare il flusso di lavoro Designer.
Nel riquadro Esplora soluzioni fare clic con il pulsante destro del mouse sul file MainWindow.xaml e scegliere Visualizza codice.
Aggiungere un metodo alla
MainWindow
classe che crea unGetToolboxControl
ToolboxControloggetto , 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; }
Aggiungere un metodo privato
AddToolbox
allaMainWindow
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); }
Aggiungere una chiamata al
AddToolBox
metodo nel costruttore dellaMainWindow()
classe, come illustrato nel codice seguente:public MainWindow() { InitializeComponent(); this.RegisterMetadata(); this.AddDesigner(); this.AddToolBox(); }
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
Nel riquadro Esplora soluzioni fare clic con il pulsante destro del mouse sul file MainWindow.xaml e scegliere Visualizza codice.
Aggiungere il metodo alla
MainWindow
classe per posizionare ilAddPropertyInspector
riquadro PropertyGrid nella colonna più a destra nella griglia:private void AddPropertyInspector() { Grid.SetColumn(wd.PropertyInspectorView, 2); grid1.Children.Add(wd.PropertyInspectorView); }
Aggiungere una chiamata al
AddPropertyInspector
metodo nel costruttore dellaMainWindow()
classe, come illustrato nel codice seguente:public MainWindow() { InitializeComponent(); this.RegisterMetadata(); this.AddDesigner(); this.AddToolBox(); this.AddPropertyInspector(); }
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);
}
}
}