問題タブ [idataerrorinfo]
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 - コントロールが表示されるときに WPF IDATAError が表示されない
ErrorTemplate に奇妙な問題があります。WPF MVVM アプリケーションを作成しました。ErrorTemplate と IDataError インターフェイスを使用してエラーを表示しています。私のフォームには、スタック パネルに折りたたまれたコントロールがいくつかあります。コントロールを表示すると、エラー テンプレートは表示されませんが、ユーザーがレコードを保存できないため、エラー機能は機能しています。UI を更新する方法やエラー テンプレートを表示する方法を知っている人はいますか? ありがとう!
wpf - MVVMでの検証に関して必要なアドバイス
構造を改善するために、既存のアプリケーションの1つをMVVMパターンに変換していますが、データ検証を行うための最良の方法に少し戸惑っています。
現在、アプリケーションはデータバインディングを使用してUIとコードをリンクし、いくつかの検証ルールと値コンバーターを使用して、同様の値(日付などにそれぞれ1つずつ)で再利用できます。
MVVMを読んでいるときに、IDataErrorInfoに出くわしました。これは、検証が表示されないようにするため、バインディングなどを設定する際の繰り返しコードをわずかに減らし、より具体的なエラーメッセージを表示できるので魅力的です。
一方、ValidationRulesは、検証が失敗した場合にバインディングデータの転送をブロックします。これは、モデル値に新しい有効な値を変更するだけでよいため、必要です。
私の主な懸念は、ビューモデルで物事を制限しすぎると、ビューで物事が難しくなることです-一般的なケースでは物事を快適なレベルに制限してから、より柔軟性が必要な特定のケースを修正することをお勧めします景色?
だから私の主な質問は、ビューモデルのプロパティに検証と変換を入れるか、検証ルールと値変換器(またはその間の妥協点)に固執する方が良いでしょうか?
c# - WPF / C#IDataErrorInfoが起動しない
フォームにコンボボックスとボタンがあります。コンボボックスにはカテゴリがあります。ブール値に基づく「システムカテゴリ」である場合、保留中を許可/禁止したいと思います。
これが私のxamlです:
これは、2つのコントロールが含まれるスタックパネルです。
システムカテゴリであると判断された場合に、コンボボックスにツールチップを表示させようとしています。
DeleteCommandは正常に機能しているため、システムカテゴリでヒットしたときにボタンが無効になるという問題は発生していません。
これは、ツールチップを表示するための私のコードです。
助言がありますか?
ありがとう、
エロック
wpf - WPF での検証 - カスタム検証規則または IDataErrorInfo
新しい WPF プログラマーとして、ユーザー入力を検証する 2 つの異なる方法の違いを見つけることができません。
IDataErrorInfo の実装に対してカスタム検証ルールを作成することの長所と短所、およびその逆の長所と短所は何ですか? いつどちらを優先する必要がありますか?
アップデート:
すでに回答を得ていますが、他の人に役立つ関連記事を見つけました。
silverlight - カスタムODataサービス(WCF RIAサービスなし)+ MVVMへのIDataErrorInfo(または検証)の追加
WCFRIAサービスを使用していません...SL4アプリケーションが使用しているカスタムODataサービスがあります。フォームに検証を追加する必要があります。VS2010が作成するプロキシがエンティティにIDataErrorInfoを実装していないことに気付きました。ビューモデルに追加しようと思っていますが、SLアプリで検証が認識されていません。
このような検証を追加することは可能ですか?驚いたことに、検索でこれ以上の結果を見つけることができませんでした... :(
.net - WPF PropertyGrid での検証の実装
を実装し、PropertyGrid選択したオブジェクト (別のライブラリ内) のプロパティが表示されます。プロパティ値はPropertyGrid、バインディングによってコントロールにバインドされます。ここで、ユーザーがPropertyGridコントロール (主にTextBox) に入力した値の検証を実行し、値が正しくない場合はユーザーにメッセージを表示したいと考えています。
数値、必須フィールドなどの一般的な検証と、ビジネス ロジックに関連する検証 (値をこれ以上にすることはできないなど) があります。
IDataErrorInfoこれ(または他の何か)を実装するために利用できるすべてのアプローチは何ですか?
wpf - WPF-MVVM でのエラー処理 / 無効化されたボタン
ビューでのエラー処理に問題があります。caliburn.micro と MEF を使用しています。
私の VM は次のようになります。
エラーが発生した場合は、プロパティ AllPropertiesValid を false に設定します。このプロパティを Button プロパティ IsEnabled にバインドします。
したがって、ビューには次のものがあります。
ただし、プロパティ AllPropertiesValid が false の場合、ボタンは引き続き有効です。AllPropertiesValid (このプロパティをラベルにバインドし、ラベルの内容が false) の値が false であることを確認します。
どうしたの ?よろしくお願いします。
編集: デザイナーではボタンが無効になっていますが、ウィンドウ ボタンが読み込まれると有効になります。
wpf - UI仮想化リストボックス内のWPF検証
開発中の WPF アプリケーションで何らかのデータ検証を行う必要があります
私の知る限り、Binding に追加ValidatesOnDataErrors=Trueすると、Binding が解決されるたびに (値が変更されるたびに、フォーカスが失われたときに可能性があります)、Binding エンジンはバインディング ソースをチェックし、 を通じてIDataErrorInfo、インターフェイスにアクセスし、エラーがあるかどうかを調べます。
1 つだけ注意点があります。データを検証するには、レンダリングする必要があります。ObservableCollectionそのエンティティの が with にバインドされているListBox場合、VirtualizingStackPanel.IsVirtualizing=Trueレンダリングされたアイテムのみが検証されます。ほとんどのアイテムはビューポートの外にあるため、レンダリングされません。
すべてのアイテムを強制的に検証するにはどうすればよいですか? UI の仮想化を削除することはできません。
wpf - WPF-検証-AdornerDecoratorが原因で、検証エラーメッセージが他のコントロールの背後に表示されます
テキストボックスにエラーがある場合に文字列を返すように、ViewModelにIDataErrorInfoを実装しました。
ただし、このエラーメッセージは、以下に示すように、UIの他のコントロールの背後にあります。

以下はxamlです:
エラーメッセージが他のコントロールと重複し、遅れないようにAdornerDecoratorを使用する方法を教えてください。
私のアプリケーションでは、AdornerDecoratorを使用しないと、エラーメッセージがまったく表示されません。
wpf - 検証テンプレートにボタンを含めることはできますか? また、それを ViewModel メソッドにバインドするにはどうすればよいですか?
要件:
以下に示すように、ユーザーが存在しないフォルダー名を入力したときに、エラー メッセージを表示する必要があります。
問題: ユーザーが「CreateNew」ボタンをクリックしたときに、UI を表示できますが、ビュー モデルでメソッドを呼び出すことができません。
モデルコードを表示:
RelayCommand.cs は、 http
://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=mag200902MVVM&DownloadId=4357 からダウンロードできます。
Xaml コード:
スタイルで DataContext プロパティを設定することに注意してください。
メソッドを検証テンプレートのボタンにバインドする方法を教えてください。