2013年3月22日金曜日

WF 4.5 で追加されたアウトラインビューを利用する

WF4.5 でワークフロー中の構造を表示するアウトラインビューが提供されることは知っていたのですが、てっきり Visual Studio 上だけの話だとばかり思っていて華麗にスルーしていたところ、これはリホスティング環境でも普通に使えるシロモノだというのが判明したので実際に使ってみました。

ワークフローデザイナーを利用するのと同じく非常に簡単です。

   1: <Window x:Class="MainWindow"
   2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   4:     Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
   5:     <Grid >
   6:         <Grid.ColumnDefinitions>
   7:             <ColumnDefinition Width="109*"/>
   8:             <ColumnDefinition Width="408*"/>
   9:         </Grid.ColumnDefinitions>
  10:  
  11:         <Grid Name="Grd" Grid.Column="1"></Grid>
  12:         <Grid Name="doc" Grid.Column="0"></Grid>
  13:  
  14:     </Grid>
  15: </Window>

こんな xaml でメイン画面を用意したとして。


   1: Imports System.Activities
   2: Imports System.Activities.Presentation
   3: Imports System.Activities.Statements
   4: Imports System.Activities.Core.Presentation
   5:  
   6: Class MainWindow
   7:  
   8:     Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs)
   9:         Dim metadata As New DesignerMetadata
  10:         metadata.Register()
  11:  
  12:         Dim wd = New WorkflowDesigner
  13:         WorkflowDesignerIcons.UseWindowsStoreAppStyleIcons()
  14:         Grd.Children.Add(wd.View)
  15:  
  16:         Dim sq As New Sequence With {.DisplayName = "アイコンサンプル"}
  17:         Dim wl1 As New WriteLine With {.DisplayName = "出力する", .Text = "クマー"}
  18:         Dim wl2 As New WriteLine With {.DisplayName = "出力する", .Text = "ムッシュ"}
  19:         Dim wl3 As New WriteLine With {.DisplayName = "出力する", .Text = "名言"}
  20:         sq.Activities.Add(wl1)
  21:         sq.Activities.Add(wl2)
  22:         sq.Activities.Add(wl3)
  23:  
  24:         doc.Children.Add(wd.OutlineView)
  25:  
  26:         wd.Load(sq)
  27:  
  28:     End Sub
  29: End Class

こんな感じにソースを書きます。WorkflowDesigner クラスで OutlineView プロパティが新たに追加され、これを特に何も考えずに表示させればそのまま連動した形で表示されます。

image

非常に簡単で、大きいワークフローを操作する際には有用ですので必須機能ですね。

0 件のコメント:

コメントを投稿