問題タブ [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.

0 投票する
1 に答える
1754 参照

c# - WPF 検証と CanExecute コマンド

最後の質問の本質を理解し、説明をより明確にしようとしています。

2 つのテキストフィールドと [保存] ボタンを使用して新しいデータを送信するための WPF フォームが与えられます。どちらのテキスト フィールドも必須フィールドであり、ViewModel プロパティにバインドされています。ボタンは、Execute および CanExecute メソッドを使用して「実行」リレー コマンドにバインドされます。CanExecute は、ViewModel の !HasErrors を返します。ViewModel は INotifyPropertyChanged および INotifyDataErrorInfo インターフェイスを実装します。プロパティ セッターは、このプロパティに対してのみ検証を実行します。

目標は次のとおりです。

  • 最初は「保存」ボタンを無効にしてください。
  • プロパティが変更されるたびに ViewModel 全体を検証せずに、両方のテキスト フィールドが正常に検証された場合にのみ、[保存] ボタンを有効にします。

最初の目標では、最初は false で、最初の検証が行われるとすぐに true になる isValidated bool プロパティを使用します。このプロパティは、CanExecute メソッドで HasErros と共にチェックされます。もっとエレガントな方法はありますか?

2番目の目標を実装する方法がわかりません。これについて何か考えはありますか?

THX

0 投票する
0 に答える
887 参照

c# - INotifyDataErrorInfo と MVVM (MVVMLight) による「複雑な検証」

基本的に問題は、BL を実行する前に、データベース (EF) から取得した値に対して検証を実行したいということです。現在、ViewModel のプロパティの属性で INotifyDataErrorInfo を使用しています。カスタムバリデーター (CustomValidation 属性) を使用してこの検証を実行しようとしました。

ただし、この検証の実行を担当するメソッドは静的でなければならないため、このシナリオではリポジトリが静的ではないため、リポジトリにアクセスできません。

これを解決するにはどうすればよいですか (unitService.GetAllUnitsAbbreviation() は、リポジトリを使用しているため、静的メソッドにすることはできません)、この種の検証を摩耗した場所 (間違った設計) で実行している可能性があります。

0 投票する
3 に答える
7084 参照

c# - WPF 4.5 で INotifyDataErrorInfo を使用して、コントロールのすべての Validation.Errors を表示する ToolTip を作成する

TextBox と ComboBox を含む複数のコントロールがあり、Validation.Errors コレクションに含まれるすべてのエラーを含むツールヒントをすべてのコントロールに表示したいと考えています。できれば全員に共通のスタイルを共有してもらいたいと思っており、それが私が試みていることです。ToolTip セッターのバインディングに何か問題があると確信していますが、何が原因かわかりません。エラーの重大度 (エラーまたは警告) を指定する INotifyDataErrorInfo 実装で Error オブジェクトを返します。

ウィンドウ内のすべてのコントロールに適用され、そのコントロールのすべてのエラーと警告のリストを含むツールヒントを表示するスタイルが必要です。エラーは赤で、警告は黄色で表示されます。これが私が思いついたスタイルです:

RelativeSource を変更して、AncestorLevel 1 と 2 の両方で Control の AncestoryType を検索しようとしましたが、どれもうまくいかないようです。

ほとんど同じことを行う ErrorTemplate に使用した ControlTemplate に基づいてスタイルを作成しました。エラーの重大度に応じて赤または黄色の境界線を表示し、コントロールの ToolTip に対してやりたいこととまったく同じように ToolTip を表示します。自体。ErrorTemplate の DataContext が自動的に Validation.Errors コレクションに設定され、ItemsSource を ItmesCollection にバインドしやすくなるため、バインディングに何らかの関係があると確信しています。スタイルのツールチップにはそのような運はありません。これが、ErrorTemplate に使用した実際の ControlTemplate です。

誰でも私に何か提案をしてもらえますか?

0 投票する
1 に答える
2140 参照

c# - カスタム ValidationAttribute と INotifyDataErrorInfo を使用して、別のプロパティが検証されたときに、あるプロパティで検証をトリガーする方法

最近まで、私はIDataErrorInfoインターフェースのカスタム拡張バージョンを使用していました。私の拡張機能を使用すると、複数のエラーを同時に処理できます。これまでのところ、非常にうまく機能しています。しかし、INotifyDataErrorInfoインターフェースが導入されたので、何か改善点があるかどうか試してみようと思いました。

いくつかのオンライン チュートリアルに従った後ValidationAttributeSystem.ComponentModel.DataAnnotations namespace. これらAttributeの を使用すると、次のような基本的な検証ルールを提供できます。

Valaidation.Errorsエラーメッセージは、適用された s で利用可能なコレクションに直接プラグインされるため、最初はかなり良いように見えましたErrorTemplate。ただし、組み込みの検証ルールのほとんどは本当に基本的なものであり、他のプロパティ値を含む複雑な検証ルールを実装する必要があることに慣れています。

そこで、複数のプロパティを含む単純な検証ルールを作成する方法を見つけようと試みました。これは、2 つ以上のフィールドのいずれかを設定する必要があるというルールです。そこで、 を拡張するクラスを宣言し、ValidationAttributeオンラインで検索した後、他のプロパティ値にアクセスする方法を見つけました。

各 にカスタムErrorTemplateを適用して基本的な UI を作成し、データ バインド プロパティTextBoxのコレクションを表示しました。Validation.Errors

プロパティのカスタムAttributeセットを使用して、どちらのプロパティも設定されていないときにインターフェイスを介してコレクションNameに を追加することができましたが、ここに問題があります。他の必要なプロパティにバインドされた他の es データのいずれかに値を追加した場合、最初のエラーメッセージはそこに残ります。ValidationResultValidation.ErrorsTextBoxTextBox

最初に戻ってTextBox何かを入力すると、検証が機能するため、値を削除しても、必要なプロパティの 1 つが設定されていることがわかりました。したがって、検証コードは機能しますが、問題は、他の必要なプロパティへのプロパティの変更がプロパティの検証をトリガーしないことNameです。

同じカスタムAttributeを他の必須プロパティに適用した場合でも、同じことが起こりました...各検証エラーは、関連するTextBox. CustomValidationAttributeクラス内のメソッドを呼び出して検証できるようにする組み込みも試しましたが、最終結果は同じでした。

検証コードは機能しますが、他の必要なプロパティの変更によってトリガーされません。他のプロパティの名前を渡してメソッドを呼び出してみValidateましたが、それは連続ループで終了しました。問題は、別のプロパティが検証されたときに、あるプロパティで検証をトリガーするにはどうすればよいかということです。

0 投票する
0 に答える
317 参照

c# - プロパティの INotifyDataErrorInfo 検証プロパティ

私は自分の wpf アプリケーションを開発しており、検証のために INotifyDataErrorInfo を使用しています。私には2つのクラス(AとB)があり、そのうちの1つ(A)にはもう1つのインスタンス(B)が2つあります。ここで、A から B のプロパティを検証したいと思います。それは INotifyDataErrorInfo を使用して可能ですか?

ここに私のサンプルコードがあります:

検証メソッドで間違ったプロパティ名を渡しているような気がします。また、他のオブジェクトBのデータが必要なため、この検証を内部に実装することはできません。Bこれは一般的なシナリオであると想定できるため、このタイプの検証は可能であると想定しますが、どうすればこれを行うことができますか?

0 投票する
1 に答える
947 参照

c# - WPF に埋め込まれた UserControl で INotifyDataErrorInfo を使用する (Caliburn.Micro を使用)

Caliburn.Micro を使用して MVVM パターンを実装するかなり複雑な WPF アプリケーションのコードをいくつか継承しました。Caliburn 命名規則を使用してモデルを表示するために自動的にバインドされたビューを使用します。ビュー モデルは INotifyDataErrorInfo を実装するクラスから継承し、Fluent Validation を使用してフィールド固有のエラーを生成します。これは完全に機能しますが、ユーザー コントロールがいくつかの異なるビューに埋め込まれており、そのユーザー コントロール内の UI 要素を検証する必要がある 1 つのシナリオを除きます。

埋め込みユーザー コントロールには、INotifyDataErrorInfo を実装しない独自のビュー モデルがあります。親ビューを検証するときに生成する検証メッセージは、表示用の UI まで伝播されない、とだけ言っておきましょう。

問題を説明するためにここに表示する必要があるコードがよくわからないので、質問はより概念的なものです-質問は次のとおりです。

私のシナリオでは、埋め込みユーザー コントロールの背後にあるビュー モデルに実装する必要がありますか、または埋め込みユーザー コントロール内にネストされたコントロールのプロパティ名を使用して、そのビュー モデルで親ビューに GetErrors() を呼び出す方法は他にありますか?

それが理にかなっていることを願っています-私はWPFにまったく慣れていません!

0 投票する
1 に答える
295 参照

silverlight - INotifyDataErrorInfo を Datarow に実装する方法

私は実装するデータロークラスを持っていますDynamicobject and INotifyPropertyChanged and INotifyDataErrorInfo

'GridData'(datarows)また、グリッドに表示するために xaml にバインドされているこのクラスで呼び出されるプロパティがあります。

実装方法を教えてくださいpublic IEnumerable GetErrors(string propertyName)

'GridData'プロパティは多くのプロパティ バッグを持つことができるため、正しく

ありがとう

0 投票する
1 に答える
2919 参照

c# - INotifyDataErrorInfo. エラー wpf で `Address.Country` のようなプロパティのエラーを表示する方法を変更しました