ボタンをICommand
から派生したクラスに関連付ける場合でも、 CanExecute
メソッドを呼び出し、その有効状態をリフレッシュします。私はCanExecuteChanged
イベントについて知っていますが、関連するコマンドが登録されているボタンが登録されていますが、なぜこれが面倒なのかについては次の段落を参照してください。有効なコントロールエントリのダイアログでOKボタンの有効状態を設定する良い方法は
いくつかの10-15個のコントロールからなるプレーンなダイアログでは、ボタンのコマンドでCanExecuteChanged
イベントを発生させ、ボタンの有効状態をCanExecute
メソッドの戻り値の影響を受けます。最後の文章で何をする必要があるのかは、かなり面倒でした。
すべてのコントロールが有効な情報を持ち、その時点で有効になるまで、確認ボタン(例:OK)がグレー表示されるように、WPFダイアログをより良い方法でコーディングする必要があります。適切に記入してください)。サンプルコード、アイデア、記事へのポインタは非常に高く評価されます。
ありがとうございました
しかし、手動で(つまりXAML内で)各コントロールに「変更された」ハンドラを追加することによって、これを行うことは、少なくともエラーが発生しやすいようです。特に、変更を示すハンドラとそれらを設定するプロパティは制御ごとに異なるため、私はいくつかのN個のイベントハンドラに悩まされています。どのくらいの数の異なるコントロールタイプを使用しているのですか?共通のハンドラを呼び出して、最終的にCanExecuteChangedイベントを発生させます。 WPF自体でこれを行うためのより自動化された方法が必要です。確かに、この検証要件は、WPFに組み込まれたいくつかの機能を適用するには十分なものです。 –
@Michael:XAMLでハンドラを配線したくない場合は、コードからハンドラを実行します。すべてのコントロールを非常に簡単にループすることができます。 –
どちらの方法でも、ハンドラの数は同じであり、ハンドラは制御タイプごとに必要です。 XAMLでは実際には簡単だと思いますが、コントロールが有効な入力や何かを持っているかどうかを確認できるバリデータのように、各コントロールに何かが組み込まれているよりも、エラーが発生しやすく面倒です。これは、有効なものと不可能なものを判別するのに役立つように、それぞれのコントロールタイプに対してバリデータを一度コーディングする必要があるとしても、望ましいと思われます。私は一度それをやって、そのタイプのすべてのコントロールに影響を与えるスタイルや何かとしてそれを固執することができます。 –