2

私はRelayCommandをあちこちで使用してきましたが、不思議に思って知りたいと思いました... CommandManager.InvalidateRequerySuggested()WPFによってgetが呼び出されるのはいつですか?

私の推測では、UI上の他のルーティングされたイベントがトリガーされるたびに、MVVMの世界では、主にOnPropertyChangedイベントが発生し、値が変更され、関連するroutedeventが実行されることを意味します。しかし、それは単なる推測であり、誰かがここで正確な内部の仕組みを知っているかどうか疑問に思っています。

4

1 に答える 1

2

私が知っているいくつかの原因があります:

  • キーボードのフォーカスが変わったとき。

  • コマンドが実行された後。

  • コントロールは、他のいくつかの場合(たとえば、TextBoxでキーを押したとき)に必要と見なされるときに、これを呼び出すことができます。

プロパティの変更だけでは、一般的に無効化の理由にはなりません(パフォーマンス上の理由から推測します)。

残念ながら、MSDNでこれに関するドキュメントを見つけることができませんでした。ここに投稿したものは、C#2010のPro WPFで見つけたものに基づいています(すばらしい本です)。

また、無効になるのはCommandManagerではありません。CommandManagerは、イベント(コマンドを使用するコントロールがサブスクライブする)を送信するだけなので、有効/無効のステータスを更新できます。

于 2011-10-05T15:39:56.677 に答える