Attività 3: creare i riquadri Casella degli strumenti e PropertyGrid
Le informazioni contenute in questo argomento sono valide per Windows Workflow Foundation 4.
In questa attività verranno creati i riquadri Casella degli strumenti e PropertyGrid e verranno aggiunti a Progettazione flussi di lavoro di Windows riallocato.
Per riferimento, alla fine di questo argomento viene fornito il codice che dovrebbe essere presente nel file MainWindow.xaml.cs dopo il completamente delle tre attività nella serie di argomenti Riallocazione dell'utilità di progettazione del flusso di lavoro.
Per creare la casella degli strumenti e aggiungerla alla griglia
Aprire il progetto HostingApplication ottenuto seguendo la procedura descritta in Attività 2: ospitare l'utilità di progettazione del flusso di lavoro.
Nel riquadro Esplora soluzioni fare clic con il pulsante destro del mouse sul file MainWindow.xaml e selezionare Visualizza codice.
Aggiungere un metodo
GetToolboxControl
alla classeMainWindow
che crea un oggetto ToolboxControl, aggiunge una nuova categoria Casella degli strumenti alla Casella degli strumenti e assegna i tipi di attivitàAssign e Sequence alla categoria.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; }
Aggiungere un metodo privato
AddToolbox
alla classeMainWindow
per posizionare la Casella degli strumenti nella colonna a sinistra nella griglia.private void AddToolBox() { ToolboxControl tc = GetToolboxControl(); Grid.SetColumn(tc, 0); grid1.Children.Add(tc); }
Aggiungere una chiamata al metodo
AddToolBox
nel costruttore della classeMainWindow()
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 che contiene le attività Assign 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 selezionare Visualizza codice.
Aggiungere il metodo
AddPropertyInspector
alla classeMainWindow
per posizionare il 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 metodo
AddPropertyInspector
nel costruttore della classeMainWindow()
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, l'area di disegno del flusso di lavoro e PropertyGrid devono essere visualizzati e quando si trascina un'attività Assign o un'attività Sequence sull'area di disegno, la griglia delle proprietà deve essere aggiornata a seconda dell'attività evidenziata.
Esempio
Il file MainWindow.xaml.cs ora deve 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()
{
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);
}
}
}
Vedere anche
Attività
Attività 1: creare una nuova applicazione Windows Presentation Foundation
Attività 2: ospitare l'utilità di progettazione del flusso di lavoro
Altre risorse
Riallocazione dell'utilità di progettazione del flusso di lavoro