Workflow Foundation の各種サービスの中に IValidationErrorService インターフェースで定義されるものがあります。これを利用すると、現在デザインしているワークフローで発生しているエラー情報を取得し何かしらの処理を行う事が可能です。
利用方法もかなり簡単です。まずは IValidationErrorService インターフェースを継承したクラスを用意します。このクラスはデザイナから受け取ったエラー情報を元に何かしらの処理を行うクラスとなります。
1: Imports System.Collections.Generic
2: Imports System.Activities.Presentation.Validation
3:
4: Public Class ValidationErrorService
5: Implements IValidationErrorService
6:
7: Public Property DisplayObject As TextBox
8:
9: Public Sub ShowValidationErrors(errors As IList(Of ValidationErrorInfo)) Implements IValidationErrorService.ShowValidationErrors
10: DisplayObject.Clear()
11: errors.ToList.ForEach(Sub(ve)
12: DisplayObject.Text += String.Format("Error : {0}", ve.Message) + ControlChars.NewLine
13: End Sub)
14: End Sub
15: End Class
サンプルとして、受け取ったエラー情報を指定されたテキストボックスに全て表示する処理を行うものを作成しました。このサービスを利用するために、デザイナの実行時コンテキストに対してパブリッシュを行います。
1: designer.Context.Services.Publish(Of IValidationErrorService)(
2: New ValidationErrorService With {
3: .DisplayObject = _traceTextBox})
このようにすることで、デザイナ上で発生しているアクティビティのエラー情報を表示できるようになります。
なお、ShowValidationErrors メソッドが呼び出されるタイミングですが、デザイナ上で何かしらの操作を行ったタイミングで都度発生します。
0 件のコメント:
コメントを投稿