我是新來的C#,WPF和MVVM模式。對不起,這篇相當長的文章,我試圖設定我所有的理解點(或不理解)。命令和MVVM原理 - 繼電器命令
在學習了WPF提供的命令機制和MVVM模式的大量文本之後,我有幾個問題想起如何使用這些東西。
我知道爲WPF提供的命令允許爲可視樹的組件中保存的命令邏輯定義多個「調用點」。當一個命令被調用時,調用通過可視化樹起泡(從命令目標或焦點元素開始),直到碰到一個持有CommandBinding的元素,該CommandBinding定義了命令邏輯的位置。
看起來不錯的是,您可以定義公共命令,而不必先指定邏輯或調用點。
我也明白,遵循MVVM模式,視圖的ViewModel應該處理邏輯,而命令的基礎WPF實現只允許視覺元素來處理它,因爲通過視覺樹調用泡沫。
然後我發現在這種情況下可以使用自定義實現,例如Josh Smith的RelayCommand,因爲您將視圖元素(例如按鈕)調用的命令綁定到基礎ViewModel中的RelayCommand對象。
但是,我沒有看到它是一個命令(通過WPF命令模式的定義),因爲我們直接指定在ViewModel中引用的實現。通過這種方法,我們可以放棄從任何地方調用命令的所有好處,而無需知道邏輯的實現位置。在這種情況下,爲什麼不直接使用Click事件處理程序(例如)?
有人可以解釋我在哪裏我錯了嗎? (感謝那些看過帖子的人!)
問候。 NR
很好的回答。我也正在學習WPF,我發現它很難。你能評論一下如何使用另一種方法調用的命令中包含的邏輯嗎?我想在這種情況下,你會用適當的邏輯編寫一個方法,並從命令中調用它。謝謝你的時間。 – MoonKnight 2013-05-02 15:44:23
@Killercam通常,你想要調用的每個「方法」都被封裝在一個「ICommand」中 - 你可以擁有一個ICommand,它只是組成多個方法,就像擁有一個調用> 1方法的方法一樣。 – 2013-05-02 15:47:21
非常感謝您的時間。 – MoonKnight 2013-05-02 16:09:32