Aufgabe 3: Erstellen der Toolbox- und PropertyGrid-Bereiche
Dieses Thema gilt für Windows Workflow Foundation 4.
In dieser Aufgabe erstellen Sie die Bereiche Toolbox und PropertyGrid und fügen sie dem neu gehosteten Windows Workflow Designer hinzu.
Als Referenz wird am Ende dieses Themas der Code bereitgestellt, der nach Abschluss der drei Aufgaben in der Reihe Erneutes Hosten des Workflow-Designers von Themen in der Datei "MainWindow.xaml.cs" vorhanden sein sollte.
So erstellen Sie die Toolbox und fügen sie dem Raster hinzu.
Öffnen Sie das Projekt "HostingApplication", das Sie erhalten haben, indem Sie das in Aufgabe 2: Hosten des Workflow-Designers beschriebene Verfahren ausgeführt haben.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei "MainWindow.xaml", und wählen Sie Code anzeigen aus.
Fügen Sie eine Methode namens
GetToolboxControl
derMainWindow
-Klasse hinzu, mit der ein ToolboxControl-Objekt erstellt wird, der Toolbox eine neue Toolbox-Kategorie hinzugefügt wird und dieser Kategorie der Assign-Aktivitätstyp und der Sequence-Aktivitätstyp hinzugefügt wird.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; }
Fügen Sie der
MainWindow
-Klasse eine privateAddToolbox
-Methode hinzu, um die Toolbox in der linken Spalte des Rasters einzufügen.private void AddToolBox() { ToolboxControl tc = GetToolboxControl(); Grid.SetColumn(tc, 0); grid1.Children.Add(tc); }
Fügen Sie der
AddToolBox
-Methode imMainWindow()
-Klassenkonstruktor einen Aufruf hinzu, wie im folgenden Code gezeigt.public MainWindow() { InitializeComponent(); this.RegisterMetadata(); this.AddDesigner(); this.AddToolBox(); }
Drücken Sie F5, um die Lösung zu erstellen und auszuführen. Die Toolbox mit der Assign-Aktivität und der Sequence-Aktivität wird angezeigt.
So erstellen Sie den PropertyGrid
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei "MainWindow.xaml", und wählen Sie Code anzeigen aus.
Fügen Sie der
MainWindow
-Klasse dieAddPropertyInspector
-Methode hinzu, um den Bereich PropertyGrid in der Spalte ganz rechts im Raster einzufügen.private void AddPropertyInspector() { Grid.SetColumn(wd.PropertyInspectorView, 2); grid1.Children.Add(wd.PropertyInspectorView); }
Fügen Sie der
AddPropertyInspector
-Methode imMainWindow()
-Klassenkonstruktor einen Aufruf hinzu, wie im folgenden Code gezeigt.public MainWindow() { InitializeComponent(); this.RegisterMetadata(); this.AddDesigner(); this.AddToolBox(); this.AddPropertyInspector(); }
Drücken Sie F5, um die Projektmappe zu erstellen und auszuführen. Die Toolbox, der Entwurfszeichnungsbereich des Workflows und die PropertyGrid-Bereiche werden normalerweise alle angezeigt, und wenn Sie eine Assign-Aktivität oder eine Sequence-Aktivität auf den Entwurfszeichnungsbereich ziehen, wird das Eigenschaftenraster je nach markierter Aktivität aktualisiert.
Beispiel
Die Datei "MainWindow.xaml.cs" sollte jetzt den folgenden Code enthalten.
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);
}
}
}
Siehe auch
Aufgaben
Aufgabe 1: Erstellen einer neuen Windows Presentation Foundation-Anwendung
Aufgabe 2: Hosten des Workflow-Designers