はい、アクティビティのCacheMetadataは、検証を実行する必要がある場所です。検証とは、ワークフローランタイムと設計者に適用される概念です。 (あなたは、検証エラーを持っている、あなたはまだワークフローを実行しようとすることができるという事実、コンパイルまたは宣言からこれを見ることができますが、あなたが行う場合は、例外がスローされます。)
例:
protected override void CacheMetadata(ActivityMetadata metadata)
{
if (this.Body == 0) metadata.AddValidationError(
new ValidationError(
"You forgot to supply a body for (this activity)",
/*iswarning = */ true,
"Body"));
}
を(ActivityMetadata.AddValidationErrorを参照してください)
2番目の質問は、ActivityDesigner側からの検証を追加するサポートですか?その答えは「いいえ、本当に」というものではありません。ActivityDesignerの上に「カスタム検証」を追加するカスタムWPFとデータバインディングを行うこともできますし、AttachedPropertiesServiceを使ってアクティビティクラスの独自のSatisfiesConstraintsプロパティを定義することもできます。しかし、それは余分な作業であり、ランタイム検証と一貫して結びつくことはないので、それは限られた価値観です。
視聴者にとって、WPFでは常にうまく機能するとは限りません。私は最終的に、基本クラス(NativeActivityを拡張)が実装からの検証エラーを集め、CacheMetadata呼び出しとIDataErrorInfoの両方でこれらを使用するハイブリッドシステムを作成しました。 – Will