码迷,mamicode.com
首页 > Windows程序 > 详细

C# WPF MVVM QQ密码管家项目(2,模型)

时间:2018-01-02 16:42:13      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:后台   return   his   提升   string   generic   数据绑定   void   color   

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,模型)

标签:后台   return   his   提升   string   generic   数据绑定   void   color   

原文地址:https://www.cnblogs.com/berumotto/p/8177305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!