2010-06-15 17 views
0

的WPF命令管理允許你做以下(僞ISH-代碼):命令管理執行的活動不火的自定義個ICommand

<Button Name="SomeButton" Command="{Binding Path=ViewModelCommand}"/> 

而在後臺代碼:

private void InitCommandEvents() 
{ 
    CommandManager.AddExecutedEventHandler(this.SomeButton, SomeEventHandler); 
} 

SomeEventHandler永遠不會被調用。

對我來說,這似乎並不是什麼非常錯誤的嘗試,但如果你考慮在CommandManager.AddExecutedEventHandler內發生了什麼,這是有道理的,爲什麼它沒有。除此之外,文檔中明確指出CommandManager僅適用於RoutedCommands。

儘管如此,這已經有一段我很沮喪,使我這個問題:

你會怎麼建議是一個事實,即命令管理器不支持自定義個ICommand最好的解決方法嗎?特別是如果你想添加一個命令的執行周圍的行爲?

現在,我在代碼後面的按鈕點擊事件中手動觸發命令。

回答

2

我通常只是子類RoutedCommand並重新使用它的功能,而不是從頭開始實施ICommand。然後它與CommandManager等效果很好,每個人都很開心。另一方面,如果你從頭開始實現一個ICommand,在我看來,不需要CommandManager.AddExecutedEventHandler:你的自定義的ICommand可以很容易地暴露出自己的方式來執行命令時註冊通知。事實上,大多數自定義的ICommand實現都是作爲處理命令執行的主要方式。

無論哪種方式,它似乎並不需要同時需要定製ICommand功能和CommandManager支持。

+0

是的,我也考慮過子類RoutedCommand。謝謝你的建議。 – 2010-06-17 07:03:09