WPF 数据双向绑定+ADO.NET 数据库操作【学习整理】

MVVMlight 框架

MVVM Light是一个轻量级的MVVM(Model-View-ViewModel)框架,用于简化WPF(Windows Presentation Foundation)应用程序的开发。它提供了一系列工具和库,帮助开发者更容易地实现MVVM模式,从而提高代码的可维护性和可测试性。

DataGrid

通过ADO.NET数据库访问技术进行数据库的连接和访问,因其定义了很多的类库来进行增删改查。其中直接添加数据即可。

数据库 SqlServer

因为是学习Demo,所以数据库简单创建就行,为了方便下面放个数据库代码:

create database InfoMSDB

create table Customer
(
	c_id int identity(1,1) primary key, 
	c_name varchar(30),
	c_age int,
	c_addres varchar(30)
)

insert into Customer(c_name,c_age,c_address)
Values('张三',19,'北京市朝阳区'),('李四',12,'北京市东城区天坛东里甲1号'),('王五',20,'湖北省武汉市江岸区沿江大道')

select * from Customer

直接从项目开始,包括Model类的编写。

NuGet程序包中添加MVVMlight (第一个,但是安装了第一个好像第二个也是自动安装)
安装第一个

安装完成后自动生成ViewModel的文件夹和创建相关文件
安装完成后的
框架安装好以后会出现一个报错,删除不必要的应用和alt+enter 就行
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

出现这个就代表成功了

在这里插入图片描述

在这里插入图片描述
数据库发生变化的时候直接右键更新数据模型即可,选中这个属性删除了再添加也可以

DAL

ProviderBase
IProvider 接口
CustomerProvider 需要继承 ProviderBase,IProvider

这个就相当于是初始化db的操作
在这里插入图片描述

创建的一个接口基类,这里包含了数据的操作 增删改查
在这里插入图片描述

继承了以后实现所有的接口并定义了相关的操作
在这里插入图片描述

下面就是Model

Model文件夹下面的Customer.cs 文件
继承 ObservableObject 是因为它带有通知的属性 RaisePropertyChanged()
在绑定的时候需要通知到前台的UI,以及数据源的修改。
内容大体就是根据表一 一对应
在这里插入图片描述
每一个属性都绑定了一个通知

下面就是CustomerViewModel

public class CustomerViewModel : ViewModelBase
    {
        private CustomerProvider customerProvider = new CustomerProvider();

        private ObservableCollection<Customer> customerList = new ObservableCollection<Customer>();

        public ObservableCollection<Customer> CustomerList
        {
            get { return customerList; }
            set { customerList = value;RaisePropertyChanged(); }
        }

        public RelayCommand LoadedCommand
        {
            get {
                return new RelayCommand(() =>
                {
                var list = customerProvider.GetALL();
                customerList.Clear();
                foreach (var item in list)
                {
                     customerList.Add(item);
                }
                });
            }
        }
        public CustomerViewModel()
        {
            customer = new CustomerModel();
        }
        private CustomerModel customer;
        public CustomerModel Customer
        {
            get { return customer; }
            set { customer = value;RaisePropertyChanged(); }
        }
    }

下面就是MainWindow

在这里插入图片描述
一个是DataContext 一个是触发器 一个是datagrid的绑定

不能说是一个双向绑定 因为ui的修改并不能通知到后台数据源的修改,只能是通过绑定的方式来读取数据库,但是大体的思路是对的,
其中可以实现的是通过两个textbox来实现数据的绑定,也就是在前台添加一下通知即可。

在其中添加一个属性改变时候的通知数据属性改变的时候触发
选择一个双向的就行 后面两个文章的属性在 文章借鉴中有
在这里插入图片描述
在这里插入图片描述

本人学习借鉴 文章借鉴

  • 14
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值