兩者之間有什麼區別,我只是對這兩個概念感到困惑,不能正確應用?附加行爲VS路由命令
回答
附加行爲是擴展控件的一種方法,無需將它們繼承。這樣做的例子是爲文本框添加水印,強制文本框只接受特定的文字記錄等等。這是典型的東西,你可以通過訂閱某些事件或設置屬性來控制。通過創建一個附加的行爲,你只是封裝這個函數重用!
路由命令是一種抽象類似於點擊按鈕等操作的執行邏輯的方法......在WPF中,構建ICommand的實現,基本上是讓可視化樹尋找它可以執行的RoutedCommand!它們之間的真正巨大差異在於,ICommand只能真正處理像按鈕之類的東西......如果您需要在點擊圖像時執行某些邏輯,則無法創建附加行爲!
上RelayCommand/DelegateCommand
UPDATE
又讀了附加一個行爲的對象僅僅意味着使物體做一些事情,它不會對自己做的。
約什 - 史密斯 - http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx
在尋找類似的問題,我碰到Chapter 6 of the PRISM 5.0 Handbook,其中規定如在指令生效的控制的說明與行爲:支持命令
WPF控件允許您聲明性地將控件掛接到命令。當用戶以特定方式與控件交互時,這些控件將調用指定的命令。例如,對於
Button
控件,當用戶單擊該按鈕時將調用該命令。與該命令關聯的該事件是固定的,不能更改。行爲還允許您以聲明方式將控件掛接到命令。但是,行爲可以與控件引發的一系列事件相關聯,並且可以用它們有條件地調用視圖模型中的關聯命令對象或命令方法。換句話說,行爲可以解決許多與命令使能控件相同的場景,並且它們可以提供更大程度的靈活性和控制。
您需要選擇何時使用啓用命令的控件以及何時使用行爲以及使用哪種行爲。如果您更願意使用單一機制將視圖中的控件與視圖模型中的功能相關聯,或者爲了保持一致性,則可以考慮使用行爲,即使是固有支持命令的控件。
如果您只需要使用啓用命令的控件來調用視圖模型上的命令,並且您對使用默認事件調用該命令感到滿意,則可能不需要行爲。同樣,如果開發人員或UI設計人員不會使用Blend for Visual Studio 2013,則由於Blend行爲需要額外的語法,因此您可能會傾向於啓用命令的控件(或自定義附加行爲)。
對於我來說,這是一個什麼樣的行爲和命令之間的區別的最好總結。
- 1. 附加的命令行爲和LostFocus
- 2. Web.Api路由附加參數到路由
- 3. 委託命令和路由命令
- 4. 爲ListViewItem執行命令的附加行爲
- 5. 執行WPF手動路由命令
- 6. python sage從命令行附加並運行另一個命令
- 7. 路由命令模板父
- 8. 路由事件和命令
- 9. 路由命令問題
- 10. java -jar命令行附加輸入
- 11. 將GUI附加到命令行工具
- 12. Flex ant mxmlc命令vs執行命令
- 13. 運行shell命令,附加STDIN命令輸入
- 14. 命令行爲附件參數
- 15. 由bash命令行
- 16. 爲什麼顯示sed命令行顯示「命令後附加字符」錯誤?
- 17. emacs命令附加到環
- 18. 使用FTP「附加」命令
- 19. 自定義附加命令
- 20. MVC3路由 - HREF已經被添加附加的路由
- 21. Rails命名空間路由 - Windows vs Linux
- 22. 路由附件
- 23. 如何將命令行爲附加到ListView中的TextBox中?
- 24. 帶有附加命令行爲的TreeView事件
- 25. linux find命令 - 全名vs路徑
- 26. $符號由命令行
- 27. 路由從角與屬性附加傷害路由
- 28. Rails 3路由附加_index到路由名稱
- 29. 命令VS子
- 30. laravel命名爲路由包
另外,關於Blend的最後一段以及它如何使用行爲也很有趣。 – Informagic 2017-07-25 10:28:01