コントロールの標準的な方法を使用して、壊れた BO ルールを報告しています。これは、BO のインターフェイス IDataError を介して行われ、XAML では、コントロールは BO のプロパティなどにバインドされます。このアプローチは問題なく機能します。ただし、無効化エラーのタイプ (または必要に応じてカテゴリ) に応じて、UI に 2 種類のビジュアルを表示する必要があります。必須フィールドの場合は CueBanner (透かし) を表示しますが、他のタイプの場合はコントロール ボーダーの色を変更します。どちらのシナリオでも、エラー メッセージのツール タイプを設定します。
IDataError の問題は、エラーの種類を区別するためのメソッド/プロパティがサポートされていないことです。
私ができる唯一の方法は、エラー テキストを調べることです。必須フィールドのテキストには、「required」というキーワードが含まれている必要があります。次のアプローチは適切ではありませんが、エラーの種類を特定し、それに応じて対処できる唯一の方法です。すべての必須フィールド ルールには、エラー テキストの一部として「必須フィールド」が含まれている必要があります。これをすべて機能させるために、ErrorMessage というカスタム依存関係プロパティを作成しました。私の ResourceDictionary には、Validation.HasError の Style.Trigger があります。そこで、依存関係プロパティの値を ErrorContent に設定します。依存関係プロパティの値が変更されたら、テキストを調べて、エラーの種類に合わせて Validation.SetErrorTemplate( myControl, newErrorTemplate) をテンプレートに設定できます。cueBanner テンプレートの削除または追加を管理するために、失われたフォーカスを得たなどのいくつかのイベントをコントロールに接続する必要がありますが、すべてが機能します。それが最善の方法であるかどうかはわかりません。
PS。ErrorTemplate を設定すると、コードでこれを行っています。つまり、ビルドして追加します。少なくとも 2 つのタイプを切り替える必要があることを念頭に置いて、Validation.SetErrorTemplate を静的リソースにポイントする方法はありますか?
あなたの考えをください..