2

設計時に WF 4.0 のカスタム アクティビティで実行できることの機能と制限をよりよく理解したいと考えています。より具体的には、アクティビティに関する詳細/データを指定するために、デザイナーが設計時にカスタマイズされた方法で対話できるようにするために、カスタム アクティビティで実行できることです。

たとえば、アクティビティ A を作成したいのですが、ワークフロー デザイナーがそのアクティビティをデザイナー (Visual Studio デザイナーまたは別のアプリケーションで再ホストされたデザイナー) のワークフローに配置すると、.NET ダイアログが表示されます。ユーザーがデータを入力できるようにし (たとえば、[ファイルを開く] ダイアログでファイルを指定)、入力データを検証します。つまり、特定のテキスト ボックスがフォーカスされるか、データが入力されるたびにコードを実行します (イベント ハンドラー)。

これを実行して、ワークフロー XAML ファイルに保存できますか?

ワークフローが実際に設計されている場合、ワークフロー デザイナーではこのすべての機能が必要であることに注意してください。

ありがとう。

4

3 に答える 3

1

WF4 デザイナーは非常に有能です。デザイナーにコントロールを追加して、エンド ユーザーがプロパティ シートを使用せずにデザイン サーフェイスを直接操作できるようにすることができます。アクティビティに検証を追加して、入力されたデータが受け入れられるかどうかを確認することもできます。これらはすべて、ワークフロー レベルではなく、C# または VB コードのアクティビティ レベルで行われます。アクティビティがドロップされたときのイベントについてはわかりませんが、それらもサポートされていると思います (少なくとも Wf3 ではどこにあり、それが引き継がれることを期待しています.

于 2009-09-02T13:28:02.310 に答える
1

このビデオでは、カスタム アクティビティ (テキスト ボックスを使用) を作成して、設計時に値を入力できるようにする方法について説明しています。これがお役に立てば幸いです。

http://bloggersguides.net/media/p/188.aspx

于 2009-09-03T07:24:19.453 に答える
1

アクティビティがワークフローに追加されたときにイベント通知をフックする方法はいくつかあります。

最初のものは、WorkflowDesigner クラス (Beta1) で TextChanged イベントをリッスンするか、より信頼性の高い ModelChanged イベント (Beta2) があると思います。これは、ワークフローで何かが変更されたことを示す通知です。特に何かというわけではありませんが、これをトリガーとして使用して、ワークフローを走査し、未構成の新しいアクティビティを探すことができます。

2 番目の可能性は、各 ModelItem (アクティビティの設計時のラッパー) が INotifyPropertyChanged を実装するという事実を利用することです。ワークフロー全体の変更をリッスンする代わりに、While アクティビティの「ボディ」などの特定のプロパティの変更をリッスンし、プロパティが初期化されて新しいアクティビティを保持するときに、変更に応答することができます。

3 つ目の可能性は、あなたが興味を持っている活動に (あなたが作成した) カスタム デザイナーがあるということです。このシナリオは、あなたが考えているものと一致しているように思えます。ここでは、アクティビティの外観を完全にカスタマイズできます。カスタム デザイナーは、実際には単なる WPF コントロールです。WPF アプリケーションの設計時に適用されるのと同じイベント、データバインディング、および検証手法を使用したり、通常の WPF イベントに応答したりできます。必要に応じて、ダイアログをポップアップすることもできます。

XAML ファイルへの保存に関しては、もちろん、カスタム アクティビティは、通常のアクティビティと同様に、構成されたすべてのプロパティと共に XAML ファイルに保存されます。XAML ファイルを再度読み込む場合は、XAML ファイルによって参照されるアクティビティを保持しているアセンブリに関するコンテキスト情報を提供する必要があります。VS では、これはアセンブリ参照を追加するのと同じくらい簡単です。再ホストのシナリオでは、これを行うための小さなコードを記述します。

詳細については、.NET Framework 4: Workflow Foundation - Beta 1 フォーラムで同様の質問をしてください。

于 2009-10-10T23:31:08.130 に答える