2010-09-20 41 views

回答

3

附加行爲是擴展控件的一種方法,無需將它們繼承。這樣做的例子是爲文本框添加水印,強制文本框只接受特定的文字記錄等等。這是典型的東西,你可以通過訂閱某些事件或設置屬性來控制。通過創建一個附加的行爲,你只是封裝這個函數重用!

路由命令是一種抽象類似於點擊按鈕等操作的執行邏輯的方法......在WPF中,構建ICommand的實現,基本上是讓可視化樹尋找它可以執行的RoutedCommand!它們之間的真正巨大差異在於,ICommand只能真正處理像按鈕之類的東西......如果您需要在點擊圖像時執行某些邏輯,則無法創建附加行爲!

上RelayCommand/DelegateCommand

UPDATE

又讀了附加一個行爲的對象僅僅意味着使物體做一些事情,它不會對自己做的。

約什 - 史密斯 - http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx

0

在尋找類似的問題,我碰到Chapter 6 of the PRISM 5.0 Handbook,其中規定如在指令生效的控制的說明與行爲:支持命令

WPF控件允許您聲明性地將控件掛接到命令。當用戶以特定方式與控件交互時,這些控件將調用指定的命令。例如,對於Button控件,當用戶單擊該按鈕時將調用該命令。與該命令關聯的該事件是固定的,不能更改。

行爲還允許您以聲明方式將控件掛接到命令。但是,行爲可以與控件引發的一系列事件相關聯,並且可以用它們有條件地調用視圖模型中的關聯命令對象或命令方法。換句話說,行爲可以解決許多與命令使能控件相同的場景,並且它們可以提供更大程度的靈活性和控制。

您需要選擇何時使用啓用命令的控件以及何時使用行爲以及使用哪種行爲。如果您更願意使用單一機制將視圖中的控件與視圖模型中的功能相關聯,或者爲了保持一致性,則可以考慮使用行爲,即使是固有支持命令的控件。

如果您只需要使用啓用命令的控件來調用視圖模型上的命令,並且您對使用默認事件調用該命令感到滿意,則可能不需要行爲。同樣,如果開發人員或UI設計人員不會使用Blend for Visual Studio 2013,則由於Blend行爲需要額外的語法,因此您可能會傾向於啓用命令的控件(或自定義附加行爲)。

對於我來說,這是一個什麼樣的行爲和命令之間的區別的最好總結。

+0

另外,關於Blend的最後一段以及它如何使用行爲也很有趣。 – Informagic 2017-07-25 10:28:01