系列目錄:
mvvm模式解析和在wpf中的實現(一)mvvm模式簡介
mvvm模式解析和在wpf中的實現(二)資料繫結
mvvm模式解析和在wpf中的實現(三)命令繫結
mvvm模式解析和在wpf中的實現(四)事件繫結
mvvm模式解析和在wpf中的實現(五)view和viewmodel的通訊
mvvm模式解析和在wpf中的實現(六)用依賴注入的方式配置viewmodel並註冊訊息
命令繫結要關注的核心就是兩個方面的問題,命令能否執行和命令怎麼執行。也就是說當view中的乙個button繫結了viewmodel中乙個命令後,什麼時候這個button是可用的,按下button後執行什麼操作。解決了這兩個問題基本就實現了命令繫結。另外乙個問題就是執行過程中需要的資料(引數)要如何傳遞。本次主要**這幾個問題。
自定義乙個能夠被繫結的命令需要實現icommand介面。該介面包含:
public那麼要如何實現這個介面呢?那得先搞明白這個介面是幹什麼用的。msdn上是這麼說的:event eventhandler canexecutechanged //
在命令可執行狀態發生改變時觸發
public
bool canexecute(object parameter) //
檢查命令是否可用的方法
public
void execute(object parameter) //
命令執行的方法
我總結了一下大概是這樣的
canexecute和execute方法是介面給出的,我們要做的就是新建乙個類mycommand來實現這兩個方法執行的內容。可以通過在mycommand的建構函式中傳入action和func,讓canexecute執行func,execute執行action。實現後mycommand結構如下圖所示,其中淺綠色背景的為icommand介面的實現,淺藍色背景的為mycommand的成員。
命令繫結時經常需要傳引數,這種情況下可以給mycommand新增泛型支援
有了mycommand類,我們就可以在viewmodel中建立乙個mycommand物件,然後在view中繫結了。示例如下:
示例**:
www.durow.vip
MVVM模式解析和在WPF中的實現(一)
一 mvvm是model view viewmodel的簡寫,這種模式的引入就是使用viewmodel來降低view和model的耦合,說是降低view和model的耦合。也可以說是是降低介面和邏輯的耦合,理想情況下介面和邏輯是完全分離的,單方面更改介面時不需要對邏輯 改動,同樣的邏輯 更改時也不需...
MVVM模式和在WPF中的實現
我大概是從2102年底開始接觸wpf,之前一直用winform。剛開始看了下感覺跟winform區別不大,控制項可以拖進去,選中了控制項屬性面板可以設定屬性 事件面板可以監聽事件,後台 處理事件,一切都那麼的熟悉。xaml布局也跟android布局很像,所以沒學習就直接開始了,覺得摸索摸索基本就差不...
MVVM 開發的幾種模式討論(WPF)
在wpf系 包括sl,wp或者win8 應用開發中,mvvm是個老生常談的問題。初學者可能不會有感覺,但當你寫乙個核心邏輯能在各種平台上無縫移植,而只需改改ui的時候,那種快感是無法用語言來形容的。筆者當初接觸時,對mvvm並不以為然,編了很多 以後,反過來看mvvm for wpf的經典文章以後,...