問題タブ [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 を適切に実装するには?
私はMSDN の例に少し混乱しています。
エンティティに関連付けられたエラーを処理および設定する方法が明確ではありません。
例のコード:
ただし、GetErrors() のドキュメントには次のように記載されています。
propertyName - 検証エラーを取得するプロパティの名前。エンティティ レベルのエラーを取得する場合は、null または Emptyです。
別の例では、辞書の _errors.Values を返すことを提案しています。これはすべてのプロパティ エラーですが、エンティティ エラーではありません。
wpf - INotifyDataErrorInfoを使用してWPF 4.5でエンティティ関連のエラーを表示するには?
MSDN のドキュメントではGetErrors
、propertyName が null または空の場合、メソッドはエンティティ関連のエラーを返す必要があると記載されています。
しかし、デバッグは、propertyName が常に検証されるプロパティの名前であることを示しています。
WPF にエンティティ関連のエラーを要求させるにはどうすればよいですか?
アップデート
これは、ValidationSummary
制御が存在する Silverlight で可能であるように見えます。
c# - リフェクションを使用してすべてのプロパティを取得し、各プロパティをメソッドに渡します
検証に simplemvvmtoolkit を使用しています (INotifyDataErrorInfo)。ビュー モデル内の各プロパティに対して自分自身を何度も繰り返す代わりに、リフレクションを使用してすべてのプロパティを取得し、それらを検証したいと思いますが、validateProperty メソッドで何を渡すかがわかりません。
ValidateProperty は以下を取り込みます。
xamarin.android - mvvmcross と monodroid で IDataErrorInfo を使用するにはどうすればよいですか
クロス プラットフォーム アプリケーションを構築しようとしています。現在、Xamarin MonoDroid 4.7 と MVVMCross を使用してプロジェクトをセットアップしています。INotifyDataErrorInfo を使用できるようにしたいのですが、次のコンパイル エラーが発生します。
タイプ「System.ComponentModel.INotifyDataErrorInfo」は、「c:\Program Files(x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.dll」と「c:\Users\MvvmCross.PortableSupport」の両方に存在します。 3.0.6\lib\MonoAndroid16\System.Windows.dll
誰かがこれに遭遇したか、回避策または解決策を開発しましたか?
ありがとう
c# - ビューモデルを介してモデルの入力検証を伝播する方法はありますか
いくつかのプロパティを持つモデルがあり、そのモデルでいくつかの検証チェックを行います (値が範囲を超えていないかどうか、数値であるかどうか、有効な郵便番号であるかどうかなど)。これらのチェックはモデルが行うべきだと思います。
これらの検証インターフェイスのいずれかを使用する選択肢があります:INotifyDataErrorInfo
またはIDataErrorInfo
. 好みはありません。
IsSelected 、 IsInScope、IsSaved などのいくつかの追加のビュー固有のハウスキーピング プロパティとともに、モデルのプロパティの多くを公開するビューモデルがあります。
ビュー(この場合は DevExpress の DxGrid) はビューモデルのコレクションにバインドされているため、モデルの検証チェックが隠されています (ビューモデルのインターフェイスにバインドされています) 。モデルの検証チェックをビューに伝達し、ビューモデルを介して伝達する簡単な方法はありますか?
編集:fyi、私は Simple MVVM Toolkit を使用しています。これは INotifyDataErrorInfo を Model 基本クラスに組み込みましたが、Viewmodel 基本クラスには組み込みませんでした。
wpf - ネストされたプロパティと INotifyDataErrorInfo の正しいプロパティ名
WPF での非同期検証に INotifyDataError インターフェイスを使用しています。私は財産を持っています
私のビューモデルにはプロパティがあります
タイプ SomeType には、プロパティがあります
現在、ViewModel は INotifyPropertyChanged と INotifyDataError を実装しており、検証はビューモデル クラスで非同期に行われます。SomeType は INotifyPropertyChanged のみを実装します。
私の質問はこれです。プロパティ名がどうあるべきかでErrorsChanged
イベントを発生させるとき。DataErrorsChangedEventArgs(propertyName))
私のバインディング パスはXXX.Name
. プロパティ名は
- XXX.名前
- 名前
または他の何か、またはSomeType
クラスにも INotifyDataErrorInfo を実装する必要がありますか?これは、検証をメイン ビュー モデルにとどめたいので、実行する必要がないことを望んでいました。
とにかく、上記の両方を試してみましたが、エラーイベントが発生していることを確認できますが、テキストボックスの周りに赤いボックスが表示されません。
c# - INotifyDataErrorInfo の使用
私のクラスでは実装INotifyDataErrorInfo
していますが、検証エラーが発生したときに正常に動作しています。TextBox の周りにその赤い枠を付けていますが、検証エラーが修正されてもそれは取り除かれません。
これが私のコードです:
エラーを削除するために RemoveError() メソッドを呼び出しています。私は何か間違ったことをしていますか?検証が修正されたら、TextBox に移動する必要があり、タブで処理されます。検証エラーがなくなったらすぐにその赤枠を削除したい。
アップデート:
テキスト ボックスに何かを入力すると、その情報を非同期的にサーバーに送信する必要があり、検証の問題がある場合は応答によってメッセージが表示されます。そのため、変更されたプロパティで検証を行うことはできません。メッセージが追加または削除された場合は、応答を確認します。削除された場合は、CheckValidationErrors() を呼び出します。
答え
私は実装IDataErrorInfo
していましたが、実装することにしましたINotifyDataErrorInfo
。この検証を機能させるには、両方のインターフェースを実装する必要があると考えていました。したがって、基本的にIDataErrorInfo
クラスから実装を削除すると、問題が解決しました。
助けてくれてありがとう!