MVVM模式解析和在WPF中的實現(三)命令繫結

2022-01-29 01:10:07 字數 1422 閱讀 7566

系列目錄:

mvvm模式解析和在wpf中的實現(一)mvvm模式簡介

mvvm模式解析和在wpf中的實現(二)資料繫結

mvvm模式解析和在wpf中的實現(三)命令繫結

mvvm模式解析和在wpf中的實現(四)事件繫結

mvvm模式解析和在wpf中的實現(五)view和viewmodel的通訊

mvvm模式解析和在wpf中的實現(六)用依賴注入的方式配置viewmodel並註冊訊息

命令繫結要關注的核心就是兩個方面的問題,命令能否執行和命令怎麼執行。也就是說當view中的乙個button繫結了viewmodel中乙個命令後,什麼時候這個button是可用的,按下button後執行什麼操作。解決了這兩個問題基本就實現了命令繫結。另外乙個問題就是執行過程中需要的資料(引數)要如何傳遞。本次主要**這幾個問題。

自定義乙個能夠被繫結的命令需要實現icommand介面。該介面包含:

public

event eventhandler canexecutechanged //

在命令可執行狀態發生改變時觸發

public

bool canexecute(object parameter) //

檢查命令是否可用的方法

public

void execute(object parameter) //

命令執行的方法

那麼要如何實現這個介面呢?那得先搞明白這個介面是幹什麼用的。msdn上是這麼說的:

我總結了一下大概是這樣的

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的經典文章以後,...