Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Designer-Neuhosting ist ein gängiges Szenario, das sich auf das Hosten des Workflowentwurfsbereichs innerhalb einer benutzerdefinierten Anwendung bezieht. Die Hostanwendung, mit der die meisten Personen vertraut sind, ist Visual Studio. Es gibt jedoch eine Reihe von Szenarien, in denen das Anzeigen des Workflow-Designers in einer Anwendung hilfreich sein kann:
Überwachen von Anwendungen (sodass ein Endbenutzer den Prozess visualisieren kann, sowie Laufzeitdaten über den Prozess, z. B. den derzeit aktiven Zustand, aggregierte Ausführungszeitdaten oder andere Informationen zu einer Instanz des Workflows).
Anwendungen, die es einem Benutzer ermöglichen, den Prozess mit einer begrenzten Gruppe von Aktivitäten anzupassen.
Zur Unterstützung dieser Arten von Anwendungen wird der Workflow-Designer innerhalb von .NET Framework ausgeliefert und kann in einer WPF-Anwendung oder in einer WinForms-Anwendung mit dem entsprechenden WPF-Hostingcode gehostet werden. Das DesignerRehosting-Beispiel veranschaulicht Folgendes:
Erneutes Hosten des Workflow-Designers
Verwenden der neu gehosteten Toolbox und auch des Eigenschaftenrasters.
Erneutes Hosten des Workflow-Designers
In diesem Beispiel wird gezeigt, wie Sie das WPF-Layout so erstellen, dass es den Designer enthält, der im folgenden Rasterlayout zu sehen ist (Toolboxcode, der für Platzprobleme ausgelassen wird). Beachten Sie die Benennung der Rahmen, die den Designer und das Eigenschaftenraster enthalten.
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<sapt:ToolboxControl>...</sapt:ToolboxControl>
</Border>
<Border Grid.Column="1" Name="DesignerBorder"/>
<Border Grid.Column="2" Name="PropertyBorder"/>
</Grid>
Als Nächstes erstellt das Beispiel den Designer und ordnet die primären Container View und PropertyInspectorView dem entsprechenden Container in der Benutzeroberfläche zu. Im folgenden Beispiel gibt es einige zusätzliche Codezeilen, die einige Erläuterungen verdienen. Der Register Aufruf ist erforderlich, um die Standardaktivitätsdesigner für die mit .NET Framework ausgelieferten Aktivitäten zuzuordnen. Load wird aufgerufen, um das WF-Element zu übergeben, das bearbeitet werden soll. Schließlich werden die View (primärer Zeichnungsbereich) und die PropertyInspectorView (Eigenschaftenraster) auf der Benutzeroberfläche platziert.
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
// register metadata
(new DesignerMetadata()).Register();
// create the workflow designer
WorkflowDesigner wd = new WorkflowDesigner();
wd.Load(new Sequence());
DesignerBorder.Child = wd.View;
PropertyBorder.Child = wd.PropertyInspectorView;
}
Verwenden der neu gehosteten Toolbox
In diesem Beispiel wird das rehostierte Toolbox-Steuerelement deklarativ in XAML verwendet. Beachten Sie, dass im Code ein Typ an den ToolboxItemWrapper Konstruktor übergeben werden kann.
<!-- Copyright (c) Microsoft Corporation. All rights reserved-->
<Window x:Class="Microsoft.Samples.DesignerRehosting.RehostingWfDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sapt="clr-namespace:System.Activities.Presentation.Toolbox;assembly=System.Activities.Presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="Window1" Height="600" Width="900">
<Window.Resources>
<sys:String x:Key="AssemblyName">System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</sys:String>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<sapt:ToolboxControl>
<sapt:ToolboxCategory CategoryName="Basic">
<sapt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}" >
<sapt:ToolboxItemWrapper.ToolName>
System.Activities.Statements.Sequence
</sapt:ToolboxItemWrapper.ToolName>
</sapt:ToolboxItemWrapper>
<sapt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sapt:ToolboxItemWrapper.ToolName>
System.Activities.Statements.WriteLine
</sapt:ToolboxItemWrapper.ToolName>
</sapt:ToolboxItemWrapper>
<sapt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sapt:ToolboxItemWrapper.ToolName>
System.Activities.Statements.If
</sapt:ToolboxItemWrapper.ToolName>
</sapt:ToolboxItemWrapper>
<sapt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sapt:ToolboxItemWrapper.ToolName>
System.Activities.Statements.While
</sapt:ToolboxItemWrapper.ToolName>
</sapt:ToolboxItemWrapper>
</sapt:ToolboxCategory>
</sapt:ToolboxControl>
</Border>
<Border Grid.Column="1" Name="DesignerBorder"/>
<Border Grid.Column="2" Name="PropertyBorder"/>
</Grid>
</Window>
Beispiel verwenden
Öffnen Sie die DesignerRehosting.sln Projektmappe in Visual Studio.
Drücken Sie F5, um die Anwendung zu kompilieren und auszuführen.
Eine WPF-Anwendung beginnt mit einem neu gehosteten Designer.