2012-09-30 76 views
0

我讀了所有關於WPF命令,我理解GoF命令模式,仍然認爲,我有一個關於該過程的問題:命令目標(例如文本框)如何告訴命令源例如一個按鈕),它已經改變了狀態(例如,將一些文本插入到文本框中),以便源可以禁用或啓用它自己或者它希望做什麼。換句話說,命令目標如何讓ICommand實現類(例如cut命令)觸發它的CanExecuteChangedEvent,以便類可以讓命令源瞭解狀態更改。命令源禁用和啓用

回答

1

有一個名爲CommandManager的類負責執行邏輯。您可以調用CommandManager.InvalidateRequerySuggested方法讓系統檢查您的CanExecute方法。

+0

如果我錯了,請糾正我,所以當像文本框這樣的控件更改狀態時,CommandManager知道這一點,它使用目標上的命令綁定來告訴狀態更改的來源。如果你知道任何文章或博客詳細說明這一過程,我將不勝感激。 –

+0

對不起,我真的不知道一個關於此的體面的文章。我使用任何一個MVVM庫或爲每個單獨的項目創建我自己的庫。這些庫(大部分)直接註冊到CommandManager並建議明確觸發事件。或者我不使用CommandManager,但在內部觸發CanExecuteChanged。 – zahir