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


MVVM模式解析和在WPF中的實現(三)

命令綁定

系列目錄:

MVVM模式解析和在WPF中的實現(一)MVVM模式簡介

MVVM模式解析和在WPF中的實現(二)數據綁定

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

MVVM模式解析和在WPF中的實現(四)事件綁定

MVVM模式解析和在WPF中的實現(五)View和ViewModel的通信 

MVVM模式解析和在WPF中的實現(六)用依賴注入的方式配置ViewModel並注冊消息

0x00 命令綁定要達到的效果

命令綁定要關注的核心就是兩個方面的問題,命令能否執行和命令怎么執行。也就是說當View中的一個Button綁定了ViewModel中一個命令后,什么時候這個Button是可用的,按下Button后執行什么操作。解決了這兩個問題基本就實現了命令綁定。另外一個問題就是執行過程中需要的數據(參數)要如何傳遞。本次主要探討這幾個問題。

0x01 命令綁定的實現

自定義一個能夠被綁定的命令需要實現ICommand接口。該接口包含:

public event EventHandler CanExecuteChanged // 在命令可執行狀態發生改變時觸發

public bool CanExecute(object parameter) //檢查命令是否可用的方法

public void Execute(object parameter)  //命令執行的方法

那么要如何實現這個接口呢?那得先搞明白這個接口是干什么用的。MSDN上是這么說的:

https://msdn.microsoft.com/zh-cn/library/system.windows.input.icommand(v=vs.110).aspx

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

 

CanExecute和Execute方法是接口給出的,我們要做的就是新建一個類MyCommand來實現這兩個方法執行的內容。可以通過在MyCommand的構造函數中傳入Action<object>和Func<object,bool>,讓CanExecute執行Func<object,bool>,Execute執行Action<object>。實現后MyCommand結構如下圖所示,其中淺綠色背景的為ICommand接口的實現,淺藍色背景的為MyCommand的成員。

 

0x02 添加泛型支持的命令MyCommand<T>

命令綁定時經常需要傳參數,這種情況下可以給MyCommand添加泛型支持

 

0x03 命令綁定示例

有了MyCommand類,我們就可以在ViewModel中創建一個MyCommand對象,然后在View中綁定了。示例如下:

 

0x03 相關下載

示例代碼: https://github.com/durow/TestArea/tree/master/MVVMTest/CommandTest

 


更多內容歡迎訪問我的博客:http://www.durow.vip


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM