WPF 数据双向绑定【自学记录】
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来实现数据的绑定,也就是在前台添加一下通知即可。
在其中添加一个属性改变时候的通知数据属性改变的时候触发
选择一个双向的就行 后面两个文章的属性在 文章借鉴中有
本人学习借鉴 文章借鉴