0

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

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

目標は次のとおりです。

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

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

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

THX

4

1 に答える 1

0

あなたの 2 つの目標は、実際には 1 つの目標にすぎません。最初に 2 番目の目標を見てみましょう。

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

最初は、テキスト フィールドは空であるため、おそらく検証に合格しません。したがって、最初の目標に従って、最初は無効になりますSave Button

• 最初は [保存] ボタンを無効にします。

次に、最後の質問 (この投稿で言及する場合は、リンクを追加する必要があります)!HasErrosで、CanExecuteハンドラーでの使用に問題がありました。今回は、2 番目の要件を満たすために、すべてのプロパティをまとめて検証する必要があります。そのため、ハンドラーで使用するだけ!HasErrosですCanExecute

于 2014-01-13T10:19:10.783 に答える