1. 程式人生 > >WPF 的 MVVM 的分析理解(一)

WPF 的 MVVM 的分析理解(一)

第三步:新增執行動作和“INotifyPropertyChanged”介面

應用程式不僅僅只是有 textboxs 和 labels, 同樣還需要執行動作,比如按鈕,滑鼠事件等。 因此讓我們新增一個按鈕來看看如何把 MVVM 類應用起來。 我們在同樣的 UI 上添加了一個‘Calculate tax’按鈕,當用戶按下按鈕,它將根據“Sales Amount”值計算出稅值並顯示在介面上。

Add Action

因此為了在 Model 類實現上面的功能,我們新增一個“CalculateTax()”方法。當這個方法被執行,它根據薪水範圍計算出稅值,並將值儲存在“Tax”屬性值中。

public class Customer
{  .... .... .... .... private double _Tax; public double Tax { get { return _Tax; } }         public void CalculateTax()         {     if (_Amount > 2000)             {                 _Tax = 20;             }             else if (_Amount > 1000)             {                 _Tax = 10;             }             else
            {                 _Tax = 5;             }         } }

由於 ViewModel 類是 Model 類的一個封裝,因此我們需要在 ViewModel 類中建立一個方法來呼叫 Model 的“CalculateTax”方法。

public class CustomerViewModel 
{
        private Customer obj = new Customer();
....
....
....
....
        public void Calculate()
        {
            obj.CalculateTax();
        }
}

現在,我們想要在 XAML 的檢視中呼叫這個“Calculate”方法,而不是在後臺編寫。不過你不能直接通過 XAML 呼叫“Calculate”方法,你需要用 WPF 的 command 類。

我們通過使用繫結屬性將資料傳送給 ViewModel 類,而傳送執行動作給 ViewModel 類則需要使用命令。

所有從檢視元素產生的動作都發送給 command 類,所以第一步是建立一個 command 類。為了建立自定義的 command 類,我們需要實現"ICommand"介面(如下圖)。