WPF/XAMLの一部のデータ入力フォームの検証ルールを作成しています。私は明示的にフィールドのバインディングに検証ルールを適用することで、私は希望のユーザーエクスペリエンスを得ることができました。以上によりXAMLでBinding.ValidationRulesを適用する簡潔な方法がありますか
<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は、スタイルとセッターを使用して、表示要素のこのような簡潔な構成を提供する非常に良い方法を提供します。しかし、それはバインディングでは機能しません。
妥当な選択肢はありますか?
カスタムマークアップ拡張機能は非常にうまく機能します。ありがとう。 –