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 プロパティが新たに追加され、これを特に何も考えずに表示させればそのまま連動した形で表示されます。
非常に簡単で、大きいワークフローを操作する際には有用ですので必須機能ですね。
0 件のコメント:
コメントを投稿