2009-09-15 63 views
1

使用命令非常方便,因爲當命令無法執行時,WPF會自動禁用命令源(通常爲按鈕)。基於WPF命令/命令綁定禁用控件

很明顯,該功能不適用於不是命令源的控件,例如ListBox

對非命令源控件啓用此功能的最佳方法是什麼?我認爲一對夫婦的解決方案的:

  • 包裹ListBoxButton和更改按鈕的ControlTemplate所以不存在鉻。
  • 創建一個無形的ButtonListBoxIsEnabled屬性綁定到的Button
  • IsEnabled屬性創建的ListBox後代實現ICommandSource

有沒有更優雅的方式?

回答

4

您可以創建一個像CanSelectCanEdit在您的代碼隱藏(或視圖模型)一個布爾值屬性,你的ListBoxIsEnabled屬性綁定到它。只需在相應命令的CanExecute方法中設置此新屬性的值即可。

+0

感謝您的回答。 CanExecute方法來自哪裏? – 2009-09-15 17:50:31

+0

我指的是WPF使用ICommand.CanExecute方法(http://msdn.microsoft.com/zh-cn/library/system.windows.input.icommand.canexecute.aspx)來確定命令可以執行或不執行。 – 2009-09-15 18:04:42

+0

明白了。那麼誰會打電話給ICommand.CanExecute。如果該命令附加到按鈕上,WPF將執行該任務(我的要點#2)。否則,這將如何工作? – 2009-09-15 22:48:20