1. 程式人生 > >C# WPF MVVM QQ密碼管家項目(2,模型)

C# WPF MVVM QQ密碼管家項目(2,模型)

service 做的 ext pri 客戶 完成 bsp chang invoke

2 - 模型Models

在這個項目中只有一個數據模型,那就是qq賬號數據。那麽qq賬號數據具有兩個屬性,一個是qq號,一個是密碼。

mvvm架構中我們需要做的是“前後臺分離”,所以大部分數據都是需要用到“數據綁定Binding”。數據綁定之後我們可能需要做修改、刪除、新增這些動態操作,那就要用到INotifyPropertyChanged接口(用於通知客戶端,通常執行綁定的客戶端,屬性值已更改)。

數據綁定在開發中非常常用和實用,在這個項目中比如我需要刪掉一個錯誤的qq號,那麽在我點擊刪除之後,界面的listview應該要把我刪掉的那條數據從列表中remove掉,然後我們還要在“數據庫”中將數據徹底刪掉,這樣才完成了刪除操作。

如果不用數據綁定去寫,我們需要做幾個步驟呢?

1,在操作事件中獲取到選中的數據;

2,將數據從“數據庫”刪除;

3,將數據從listview中移除。

一共需要3個步驟。如果我們使用了數據綁定,我們需要幾個步驟?

1,將選中數據從“數據集合中”移除,更新“數據庫”,完成。

是不是超級快。在數據綁定中我們不需要在後臺代碼中直接操作listview了,只需要操作listview綁定的數據即可,大大提升了開發效率和可維護性。

下面繼續我們的項目,要用INotifyPropertyChanged,就要實現這個接口;

1,在Models文件夾下新建一個類,命名為:MyINotifyPropertyChanged.cs:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;

namespace qqkeys.Models
{
    public class MyINotifyPropertyChanged : INotifyPropertyChanged
    {
        
public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged([CallerMemberName]string propertyName = "") { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } } }

2,新建QQ數據模型:在Models文件夾下新建一個類,命名為QQModel.cs(每個數據模型都要繼承MyINotifyPropertyChanged)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace qqkeys.Models
{
    public class QQModel : MyINotifyPropertyChanged
    {
        private int qq_;
        public int qq { get { return qq_; } set { qq_ = value; OnPropertyChanged(); } }

        private string password_;
        public string password { get { return password_; } set { password_ = value; OnPropertyChanged(); } }

    }
}

可以看到在QQModel中兩個屬性的set方法都調用了一個OnPropertyChanged();方法,就是我們第1步新建的MyINotifyPropertyChanged中的一個接口方法,這個方法就起到了負責通知客戶端屬性已經更改的作用。如果不實現這個接口不調用這個方法會發生什麽呢?答案是我們操作綁定的數據後數據是能成功操作了,但是界面不會進行數據的更新,比如刪掉一個qq號,數據上是刪除掉了,但是界面上還是存在這個qq號。

C# WPF MVVM QQ密碼管家項目(2,模型)