2011-07-05 24 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