WPF/XAMLの一部のデータ入力フォームの検証ルールに取り組んでいます。フィールドバインディングに検証ルールを明示的に適用することで、希望するユーザーエクスペリエンスを得ることができました。
<Binding
Path="qtyoffset"
NotifyOnValidationError="True"
ValidatesOnDataErrors="True"
UpdateSourceTrigger="PropertyChanged"
>
<Binding.ValidationRules>
<utility:DecimalValidationRule precision="1" />
</Binding.ValidationRules>
</Binding>
上記の場合、フィールドはキーを押すたびに検証されます。ユーザーが「X」を入力すると、フィールドにはすぐに無効のフラグが付けられ、エラーメッセージが適切な場所に表示され、「コミット」ボタンがすぐに無効になります。ユーザーが小数点以下2桁を入力したり、小数点以下2桁を入力したりした場合も、同じことが起こります。
私の唯一の問題は冗長性です。上記のバインディングコードはすべてのフィールドに提供する必要があり、1つのフィールドで正しくない場合、その1つのフィールドは正しく機能しません。むしろ、バインディングパスのみを指定し、残りのパスを自動的に追加したいと思います。すべてのバインディングにNotifyOnValidationError、ValidatesOnDataErrors、およびUpdateSourceTriggerを設定し、バインドされているタイプに応じて、特定のデータタイプに適切な検証ルールを設定します。または、少なくとも、XAMLで指定したタイプに応じて。
JQueryで検証を行う方法を考えています。各入力要素のすべての検証ルールを静的にリストするのではなく、いくつかのクラスを設定します。次に、読み込み時に、JQueryのDOM検索機能を使用して、特定のクラスセットを持つすべての入力要素を検索し、適切な検証機能を動的に追加します。
XAMLは、スタイルとセッターを使用して、表示要素にこの種の簡潔な構成を提供する非常に優れた方法を提供します。しかし、それはバインディングでは機能しません。
合理的な代替案はありますか?