Dela via


Uppgift 2: Värd för arbetsflödet Designer

Det här avsnittet beskriver proceduren för att vara värd för en instans av Windows Workflow Designer i ett Windows Presentation Foundation-program (WPF).

Proceduren konfigurerar rutnätskontrollen som innehåller designern, skapar programmatiskt en instans av WorkflowDesigner som innehåller en standardaktivitetSequence, registrerar designermetadata för att ge designerstöd för alla inbyggda aktiviteter och är värd för arbetsflödet Designer i WPF-programmet.

Värd för arbetsflödesdesignern

  1. Öppna det HostingApplication-projekt som du skapade i uppgift 1: Skapa ett nytt Windows Presentation Foundation-program.

  2. Justera fönstrets storlek så att det blir enklare att använda arbetsflödets Designer. Det gör du genom att välja MainWindow i designern, trycka på F4 för att visa fönstret Egenskaper . I avsnittet Layout där anger du värdet 600 och Höjd till värdet 350.

  3. Ange rutnätsnamnet genom att välja rutnätspanelen i designern (klicka på rutan i MainWindow) och ange egenskapen Namn överst i fönstret Egenskaper till "grid1".

  4. I fönstret Egenskaper klickar du på ellipsen (...) bredvid ColumnDefinitions egenskapen för att öppna dialogrutan Samlingsredigerare .

  5. I dialogrutan Samlingsredigerare klickar du på knappen Lägg till tre gånger för att infoga tre kolumner i layouten. Den första kolumnen innehåller verktygslådan, den andra kolumnen är värd för arbetsflödet Designer och den tredje kolumnen används för egenskapskontrollen.

  6. Ange egenskapen för Width den mellersta kolumnen till värdet "4*".

  7. Spara ändringarna genom att klicka på OK. Följande XAML läggs till i filen MainWindow.xaml :

    <Grid Name="grid1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition Width="4*" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
    </Grid>
    
  8. I Solution Explorer högerklickar du på MainWindow.xaml och väljer Visa kod. Ändra koden genom att följa dessa steg:

    1. Lägg till följande namnområden:

      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;
      
    2. Om du vill deklarera ett privat medlemsfält som ska innehålla en instans av WorkflowDesignerlägger du till följande kod i MainWindow klassen:

      public partial class MainWindow : Window
      {
          private WorkflowDesigner wd;
      
          public MainWindow()
          {
              InitializeComponent();
          }
      }
      
    3. Lägg till följande AddDesigner-metod i klassen MainWindow. Implementeringen skapar en instans av WorkflowDesigner, lägger till en Sequence aktivitet i den och placerar den i den mellersta kolumnen i rutnät1-rutnätet.

      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);
      }
      
    4. Registrera designermetadata för att lägga till designerstöd för alla inbyggda aktiviteter. På så sätt kan du ta bort aktiviteter från verktygslådan till den ursprungliga Sequence aktiviteten i arbetsflödet Designer. Det gör du genom RegisterMetadata att lägga till metoden i MainWindow klassen:

      private void RegisterMetadata()
      {
          var dm = new DesignerMetadata();
          dm.Register();
      }
      

      Mer information om hur du registrerar aktivitetsdesigners finns i Så här skapar du en anpassad aktivitet Designer.

    5. MainWindow I klasskonstruktorn lägger du till anrop till de metoder som tidigare deklarerats för att registrera metadata för designerstöd och för att skapa WorkflowDesigner.

      public MainWindow()
      {
          InitializeComponent();
      
          // Register the metadata.
          RegisterMetadata();
      
          // Add the WFF Designer.
          AddDesigner();
      }
      

      Anteckning

      Metoden RegisterMetadata registrerar designermetadata för inbyggda aktiviteter, inklusive Sequence aktiviteten. AddDesigner Eftersom metoden använder Sequence aktiviteten RegisterMetadata måste metoden anropas först.

  9. Tryck på F5 för att skapa och köra lösningen.

  10. Se Uppgift 3: Skapa verktygslådan och EgenskapGrid-fönster för att lära dig hur du lägger till stöd för Verktygslåda och PropertyGrid i den omvärdade arbetsflödesdesignern.

Se även