WPF 的 MVVM 的分析理解(一)
阿新 • • 發佈:2019-02-18
第三步:新增執行動作和“INotifyPropertyChanged”介面
應用程式不僅僅只是有 textboxs 和 labels, 同樣還需要執行動作,比如按鈕,滑鼠事件等。 因此讓我們新增一個按鈕來看看如何把 MVVM 類應用起來。 我們在同樣的 UI 上添加了一個‘Calculate tax’按鈕,當用戶按下按鈕,它將根據“Sales Amount”值計算出稅值並顯示在介面上。
因此為了在 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"介面(如下圖)。