Поделиться через


Повторное размещение конструктора

Данный раздел относится к версии Windows Workflow Foundation 4.

Повторное размещение конструктора представляет собой обычный сценарий, предусматривающий размещение поля визуальной разработки рабочего процесса в пользовательском приложении. Наиболее привычным приложением размещения является Visual Studio, однако в целом ряде сценариев может быть полезным отображение конструктора рабочих процессов в приложении.

  • Наблюдение за приложениями (позволяющее конечному пользователю визуально представить процесс, а также данные среды выполнения о процессе, такие как состояние, активное в настоящее время, агрегированные данные времени выполнения или другие сведения об экземпляре рабочего процесса).

  • Приложения, которые позволяют пользователю настраивать процесс с ограниченным набором действий.

Для поддержки этих типов приложений в составе платформы .NET Framework поставляется конструктор рабочих процессов, который может быть размещен в приложении WPF или в приложении WinForms с соответствующим кодом размещения WPF. В этом образце показаны следующие действия.

  • Повторное размещение конструктора рабочих процессов.

  • Кроме того, использование повторно размещенной области элементов и таблицы свойств.

Повторное размещение конструктора

Этот образец показывает, как создать макет WPF, содержащий конструктор, который можно видеть в следующем макете таблицы (код панели инструментов опущен в целях экономии места). Обратите внимание на то, как именуются границы, которые содержат конструктор и таблицы свойств.

<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="7*"/>
            <ColumnDefinition Width="3*"/>
        </Grid.ColumnDefinitions>
        <Border Grid.Column="0">
            <sad:ToolboxControl> ... </sad:ToolboxControl>
        </Border>
        <Border Grid.Column="1" Name="DesignerBorder"/>
        <Border Grid.Column="2" Name="PropertyBorder"/>
    </Grid> 

Затем в образце создается конструктор и связываются его первичные представления View и PropertyInspectorView с соответствующим контейнером в пользовательском интерфейсе. В следующем примере есть несколько дополнительных строк кода, которые заслуживают более подробного объяснения. Вызов Register требуется для связывания предусмотренных по умолчанию конструкторов действия для действий, поставляемых с .NET Framework. Load вызывается для передачи элемента WF, подлежащего редактированию. Наконец, в область пользовательского интерфейса помещаются View (первичное полотно) и 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;
} 

Использование повторно размещенной области инструментов

В этом образце используется повторно размещенный элемент управления области инструментов декларативно в XAML. Обратите внимание на то, что в коде каждый может передать некоторый тип в конструктор ToolBoxItemWrapper.

<Window.Resources>
        <sys:String x:Key="AssemblyName">System.Activities.Core, 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">
            <sad:ToolboxControl>
                <sad:ToolboxControl.Categories>
                    <sad:ToolboxItemCategory CategoryName="Basic">
                        <sad:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}" >
                            <sad:ToolboxItemWrapper.ToolName>
                                System.Activities.Core.Sequence
                            </sad:ToolboxItemWrapper.ToolName>
                           </sad:ToolboxItemWrapper>
                        <sad:ToolboxItemWrapper  AssemblyName="{StaticResource AssemblyName}">
                            <sad:ToolboxItemWrapper.ToolName>
                                System.Activities.Core.WriteLine
                            </sad:ToolboxItemWrapper.ToolName>
                            
                        </sad:ToolboxItemWrapper>
                        <sad:ToolboxItemWrapper  AssemblyName="{StaticResource AssemblyName}">
                            <sad:ToolboxItemWrapper.ToolName>
                                System.Activities.Core.If
                            </sad:ToolboxItemWrapper.ToolName>
                            
                        </sad:ToolboxItemWrapper>
                        <sad:ToolboxItemWrapper  AssemblyName="{StaticResource AssemblyName}">
                            <sad:ToolboxItemWrapper.ToolName>
                                System.Activities.Core.While
                            </sad:ToolboxItemWrapper.ToolName>
                           
                        </sad:ToolboxItemWrapper>
                    </sad:ToolboxItemCategory>
                </sad:ToolboxControl.Categories>
            </sad:ToolboxControl>

Использование образца

  1. Откройте решение DesignerRehosting.sln в Visual Studio 2010.

  2. Чтобы скомпилировать и запустить приложение, нажмите клавишу F5.

  3. Приложение WPF начинается с повторно размещенного конструктора.

Dd699776.Important(ru-ru,VS.100).gif Примечание
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).

<диск_установки>:\WF_WCF_Samples

Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.

<диск_установки>:\WF_WCF_Samples\WF\Basic\DesignerRehosting\Basic