2011-07-05 1 views
1

私のWPFプロジェクトには、多数のボタンとフレームを持つメインウィンドウがあります。フレーム内にページを表示し、上のボタンは、下のページにあるメソッドを呼び出すために、ルーティングされたコマンドを使用します。これまでの私と?フレームでルーテッドコマンドを使用するときの問題

ページを変更するまではすべて正常に機能します。この新しいページにはコマンドに関連するメソッドがありますが、ルーティングされたコマンドは前のページのメソッドを探しているようです。私は、コマンド自体にtypeof()引数を設定したときに、なぜこれが起こっているのかわかりません:

public static RoutedCommand cmd = new RoutedCommand("Foo", typeof(BarPage)); 

どうすればこの問題を解決できますか?私は、新しく選択されたページのテキストボックスに焦点を当てることは事柄を修正することに気付きましたが、ページには必ずフィールドが含まれるわけではないため、これは実行可能な解決策ではありません。私はまた、ページ自体に焦点を当ててみましたが、問題は依然として適用されます。

ありがとうございます。

+0

それが役立つかどうかはわかりませんが、新しいページが読み込まれた後でCommandManager.InvalidateRequerySuggested()を呼び出せばよいでしょう。既定では、コマンドマネージャは特定の条件に対してCanExecuteのみをチェックします。たぶん、ページナビゲーションが正しくこれを引き起こさない。 – NathanAW

+0

CanExecuteとExecuteのハンドラはどこで定義しますか? – vrrathod

+0

私は今問題をソートしました - [マークされた回答](http://stackoverflow.com/questions/6584720/issue-when-using-routed-commands-with-a-frame/6589576#6589576)の私のコメントを見てください) 詳細については。お二人ともご協力いただきありがとうございます。 – Jonathan

答えて

1

この記事をチェックしてくださいhttp://msdn.microsoft.com/en-us/magazine/cc785480.aspx
これはルーティングされたハンドラでこの問題について正確に述べています。

+0

ソート済み!おかげさまで、このページの例は大きな助けとなりました。それぞれのページのコマンドバインディングを.xamlに登録するのではなく、CommandManager.RegisterClassCommandBinding(...)を使用してメインウィンドウの.csにすべて定義しています。 – Jonathan

関連する問題