問題タブ [inotifydataerrorinfo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - INotifyDataErrorInfo は必要なときにのみトリガーされます
モデルに INotifyDataErrorInfo を実装しました。しかし、必要なときにそれを使用することはできないようです。例えば。起動時または入力中にエラーが発生した場合は検証しないでください。ボタンをクリックしたときのみ(保存)。
私は現在これを私のXAMLに持っています:
そして、SaveCommand の下の ViewModel で:
私のモデルは次のようになります。
そして、ValidateModelBase の私の実装:
問題は通常どおりに機能することですが、ウィンドウが開かれたときにテキストボックスがすでに赤くなっています。起動時の検証を無視し、[保存] をクリックした瞬間にのみ検証するようにします。保存をクリックすると、検証され、エラーがないかどうかが確認されます。エラーが発生すると、検証が設定され (現在は赤でマークされているはずです)、ウィンドウは開いたままになります。どうすればこれを達成できますか。
c# - INotifyDataErrorInfo GetErrors() はいつ呼び出されますか?
WPF の INotifyDataErrorInfo について私が見つけたドキュメントには、UI を介して値が設定されたとき、または INotifyDataErrorInfo の ErrorsChanged イベントが呼び出された結果として GetErrors() メソッドが呼び出されると記載されているようです。
しかし、DataContext が INotifyDataErrorInfo を実装するビューモデルであるウィンドウをデバッグするときに見ているものとは一致しません (問題のビューモデルは Mvvm Light で構築されています)。
代わりに、ウィンドウが初期化されてその DataContext が設定されたときに GetErrors() が呼び出されますが、その後はビューモデル コードが ErrorsChanged イベントを発生させたときにのみ呼び出されます。私の場合、ErrorsChanged イベントを発生させるように記述したコードによって、ビューモデルで特定のプロパティが設定されるたびにこれが行われます。
最初に検証コードを呼び出さずに GetErrors() が WPF によって呼び出される可能性がある状況を処理する必要があるかどうかを知りたいので、この質問をしています。実際には検証がまだ行われていないため、エラーが存在しないと誤って報告される可能性があります。
c# - Xamarin.Forms エントリ アタッチ プロパティの "ブリード オーバー" を修正するには?
INotifyDataErrorInfo を使用して Xamarin.Forms(XF) エントリの検証をセットアップし、プロパティ (AP) を添付しようとしています。エントリを 1 つしか使用しない場合でも、コードは期待どおりに機能します。この問題は、2 番目のエントリの AP を初期化するときに発生します。その後、Entry1 でエラーが発生すると、Entry2 に表示されます。
私はWPFで INotifyDataErrorInfo を使用しましたが、それは魅力的です。唯一の問題は、「検証」アタッチ プロパティが WPF にどのように実装されているかに関するドキュメントが見つからないことです。私は検証に関して他の選択肢を見てきましたが、カスタム モデル ラッパーと一緒に INotifyDataErrorInfo を使用するほど堅実ではないようです。
Binding Extension (バインディングの取得に使用)
アタッチ プロパティ
エントリースタイル
ビューのエントリ
私が期待していたのは、複数の Entry コントロールに対してこの ValidationBehavior を有効にしてから、それぞれのエラーを表示できるはずだということです。
APが静的クラスであり、プロパティも同様であるという事実と関係があると思いますが、これが正しい場合、アタッチプロパティのポイントは何なのか..
誰もこれを行う方法について最もかすかな考えを持っていますか?
c# - IDataErrorInfo を INotifyDataErrorInfo に置き換える
私はPerson2 つの properties FirstName、LastName, two Constructors、 one 、およびICommandに必要な通常のもので名前が付けられたクラスを持っています:INotifyPropertyChangedIDataErrorInfo
では、検証エラー メッセージ用に 2 つと、ICommand にバインドされたをPerson に 2 つxamlバインドTextBoxし、次のように追加します。FirstNameLastNameLabelButtonPersonListView
ファーストネームとラストネームが有効でない場合はエラーメッセージが表示され、ファーストネームとラストネームのいずれかが無効である限りボタンは無効のままです。IDataErrorInfoの部分だけ差し替えたいINotifyDataErrorInfo。Personクラスでどのような変更を加えxaml、同じ機能を維持する必要がありますか?