Změna hostitele návrháře

Přemístění návrhářského prostředí je běžný scénář, který se týká hostování pracovního plátna návrhu uvnitř vlastní aplikace. Hostitelská aplikace, kterou většina lidí zná, je Visual Studio, ale existuje řada scénářů, ve kterých může být užitečné zobrazit návrháře pracovních postupů v aplikaci:

  • Monitorování aplikací (umožňující koncovému uživateli vizualizovat proces a také data modulu runtime o procesu, jako je aktuálně aktivní stav, agregovaná data doby provádění nebo jiné informace o instanci pracovního postupu).

  • Aplikace, které uživateli umožňují přizpůsobit proces s omezenou sadou aktivit.

Pro podporu těchto typů aplikací je návrhář pracovních postupů součástí rozhraní .NET Framework a může být součástí aplikace WPF nebo aplikace WinForms s kódem WPF pro hostování. Ukázka DesignerRehosting ukazuje:

  • Změna hostitele návrháře WF

  • Použití rehodnoceného panelu nástrojů a tabulky vlastností.

Přemístění návrháře na jiného hostitele

Tato ukázka ukazuje, jak vytvořit rozložení WPF, které bude obsahovat návrháře, jak je vidět v následujícím rozložení mřížky (kód panelu nástrojů vynechán kvůli obavám o místo). Všimněte si pojmenování ohraničení, která obsahují návrháře a mřížku vlastností.

<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>

Potom ukázka vytvoří návrháře a přiřadí jeho primární View a PropertyInspectorView ke vhodnému kontejneru v uživatelském rozhraní. V následujícím příkladu je několik dalších řádků kódu, které si zaslouží vysvětlení. Volání Register je nutné k přidružení výchozích návrhářů aktivit pro aktivity dodávané s rozhraním .NET Framework. Load je volána pro předání položky WF, která má být upravena. Na plochu uživatelského rozhraní se nakonec umístí (primární plátno) View a (mřížka vlastností) PropertyInspectorView.

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

Použití přehostovaného panelu nástrojů

Tato ukázka používá přemístěný ovládací prvek panelu nástrojů deklarativně v XAML. Všimněte si, že v kódu lze předat typ konstruktoru ToolboxItemWrapper .

<!-- 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>

Použití ukázky

  1. Otevřete řešení DesignerRehosting.sln v sadě Visual Studio.

  2. Stisknutím klávesy F5 aplikaci zkompilujte a spusťte.

  3. Aplikace WPF začíná s integrovaným návrhářem.