Tarefa 2: Hospedar o Designer de Fluxo de Trabalho
Este tópico descreve o procedimento para hospedar uma instância do Designer de Fluxo de Trabalho do Windows em um aplicativo do Windows Presentation Foundation (WPF).
O procedimento configura o controle de Grade que contém o designer, criar programaticamente uma instância do WorkflowDesigner que contém uma atividade padrão de Sequence, registra metadados de designer para fornecer suporte do designer para todas as atividades internas e hospeda o Designer de Fluxo de Trabalho no aplicativo do WPF.
Para hospedar o designer de fluxo de trabalho
Abra o projeto HostingApplication que você criou na Tarefa 1: Criar um novo aplicativo Windows Presentation Foundation.
Ajuste o tamanho da janela para facilitar o uso do Designer de Fluxo de Trabalho. Para fazer isso, selecione MainWindow no designer, pressione F4 para exibir a janela Propriedades e, na seção Layout, defina a Largura para um valor de 600 e a Altura para um valor de 350.
Defina o nome da grade selecionando o painel Grade no designer (clique na caixa dentro da MainWindow) e definindo a propriedade do Nome na parte superior da janela Propriedades para “grid1”.
Na janela Propriedades, clique nas reticências (…) ao lado da propriedade
ColumnDefinitions
para abrir a caixa de diálogo Editor de coleção.Na caixa de diálogo Editor de coleção, clique no botão Adicionar três vezes para inserir três colunas no layout. A primeira coluna conterá a Caixa de Ferramentas, a segunda coluna hospedará o Designer de Fluxo de Trabalho e a terceira coluna será usada para o inspetor de propriedade.
Defina a propriedade de
Width
da coluna do meio para o valor “4*”.Clique em OK para salvar as alterações. O XAML a seguir é adicionado ao seu arquivo MainWindow.xaml:
<Grid Name="grid1"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="4*" /> <ColumnDefinition /> </Grid.ColumnDefinitions> </Grid>
Em Gerenciador de Soluções, clique com o botão direito do mouse em MainWindow.xaml e selecione Exibir Código. Modifique o código seguindo estas etapas:
Adicione os seguintes namespaces:
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;
Para declarar um campo de membro particular para armazenar uma instância de WorkflowDesigner, adicione o seguinte código à classe de
MainWindow
:public partial class MainWindow : Window { private WorkflowDesigner wd; public MainWindow() { InitializeComponent(); } }
Adicione o seguinte método
AddDesigner
à classeMainWindow
. A implementação cria uma instância de WorkflowDesigner, adicione uma atividade de Sequence e o coloca na coluna do meio da Grade grid1.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); }
Registre os metadados de designer para adicionar suporte do designer para todas as atividades internos. Isso permite que você solte atividades da caixa de ferramentas na atividade original de Sequence no Designer de Fluxo de Trabalho. Para fazer isso, adicione o método de
RegisterMetadata
à classe deMainWindow
:private void RegisterMetadata() { var dm = new DesignerMetadata(); dm.Register(); }
Para obter mais informações sobre como registrar designers de atividades, consulte Como criar um designer de atividade personalizado.
No construtor da classe de
MainWindow
, adicione chamadas para métodos previamente declaradas para registrar os metadados para o suporte de designer e criar WorkflowDesigner.public MainWindow() { InitializeComponent(); // Register the metadata. RegisterMetadata(); // Add the WFF Designer. AddDesigner(); }
Pressione F5 para compilar e executar a solução.
Consulte a Tarefa 3: Criar a Caixa de Ferramentas e os Painéis PropertyGrid para saber como adicionar suporte à Caixa de Ferramentas e ao PropertyGrid ao designer de fluxo de trabalho hospedado novamente.