MVVMLight绑定数据
我们先新建一个WPF项目MVVMLightDemo,添加GalaSoft.MvvmLight.dll(没有可以自己下载)

然后在项目中添加三个文件夹,如图:

先添加我们的Model,在Model下新建一个类Student
using GalaSoft.MvvmLight;
using System.Collections.ObjectModel; namespace MVVMLightDemo.Model
{
public class Student : ObservableObject
{
private int stuNo; public int StuNo
{
get { return stuNo; }
set { stuNo = value; RaisePropertyChanged(() => StuNo); }
}
private string name; public string Name
{
get { return name; }
set { name = value; RaisePropertyChanged(() => Name); }
} public static ObservableCollection<Student> GetStudentList()
{
ObservableCollection<Student> list = new ObservableCollection<Student>();
list.Add(new Student() { StuNo = , Name = "张三" });
list.Add(new Student() { StuNo = , Name = "李四" });
return list;
}
}
}
注意:1.该类继承了ObservableObject,该类主要实现了属性变更通知接口,如我们用到的:RaisePropertyChanged 方法
2.该类中的GetStudentList()方法只是为了得到数据,我们项目里一般都是从数据库查数据。
接着,我们在ViewModel下添加StudentViewModel文件,代码如下:
using GalaSoft.MvvmLight;
using MVVMLightDemo.Model;
using System.Collections.ObjectModel; namespace MVVMLightDemo.ViewModel
{
public class StudentViewModel : ViewModelBase
{
private ObservableCollection<Student> studentData;
public ObservableCollection<Student> StudentData
{
get
{
return studentData;
}
set
{
studentData = value;
RaisePropertyChanged(() => StudentData);
}
} public StudentViewModel()
{
studentData = Student.GetStudentList();
}
}
}
注意:该类继承了ViewModelBase(ViewModelBase 也继承了ObservableObject),不要忘记using System.Collections.ObjectModel;
我在该类的构造函数中,对 StudentData 进行了初始化,把数据给赋值上去了,那么在接下来的View中绑定 StudentData 才会出现数据。
最后,在View文件夹下添加StudentView.xaml文件。代码如下:
<Window x:Class="MVVMLightDemo.View.StudentView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="StudentView" Height="" Width="">
<Grid>
<DataGrid Name="studentDataGrid" ItemsSource="{Binding Path=StudentData}"/>
</Grid>
</Window>
仅这样还不行,我们还需要让View与ViewModel关联起来,那么需要设置这个View的数据上下文。 在后台编写如下代码(也可在前台编写绑定DataContext)
using System.Windows;
using MVVMLightDemo.ViewModel; namespace MVVMLightDemo.View
{
public partial class StudentView : Window
{
public StudentView()
{
InitializeComponent();
this.DataContext = new StudentViewModel();
}
}
}
好了,到这里我们实现了MVVMLight的数据绑定,后面将在这个代码的基础上,介绍命令绑定。
装模作样的声明一下:本博文章若非特殊注明皆为原创,若需转载请保留原文链接(http://www.cnblogs.com/kest/p/4691423.html)及作者信息k_est
MVVMLight绑定数据的更多相关文章
- 使用 MVVMLight 绑定数据(转)
MVVMLight绑定数据示例 好了,我们在新建了两个项目,分别是“MVVMLight的主程序” 与 “Model层”,运行的效果及解决方案结构如下: 其实很简单,就是绑定了一个数据源而已,编写的代 ...
- 使用 MVVMLight 绑定数据
如果你还不知道如何在VS中加入MVVMLight的引用,那么建议你先翻阅这篇文章:在VS中安装/使用 MVVMLight 这篇文章主要是介绍如何使用MVVMLight来绑定数据到界面中(View),以 ...
- Android之ListView性能优化——一行代码绑定数据——万能适配器
如下图,加入现在有一个这样的需求图,你会怎么做?作为一个初学者,之前我都是直接用SimpleAdapter结合一个Item的布局来实现的,感觉这样实现起来很方便(基本上一行代码就可以实现),而且也没有 ...
- angularJS绑定数据时自动转义html标签
angularJS在进行数据绑定时默认是会以文本的形式输出,也就是对你数据中的html标签不进行转义照单全收,这样提高了安全性,防止了html标签中的注入攻击,但有些时候还是需要的,特别是从数据库读取 ...
- 【WPF】绑定数据
WPF绑定数据 模型类(继承 INotifyPropertyChanged,实现属性的变更通知)
- 关于angularJS绑定数据时自动转义html标签
关于angularJS绑定数据时自动转义html标签 angularJS在进行数据绑定时默认是会以文本的形式输出,也就是对你数据中的html标签不进行转义照单全收,这样提高了安全性,防止了html标签 ...
- knockoutjs中使用mapping插件绑定数据列表
使用KO绑定数据列表示例: 1.先申请V,T,T2三个辅助方法,方便调试.声明viewModel和加载数据时的映射条件mapping 2.先使用ko.mapping.fromJS()将原来的 ...
- csharp: 用Enterprise Library对象实体绑定数据
Enterprise Library: https://msdn.microsoft.com/en-us/library/ff648951.aspx /// <summary> /// 是 ...
- D3.js 选择元素和绑定数据/使用数据
选择元素和绑定数据是 D3 最基础的内容,本文将对其进行一个简单的介绍. 一.如何选择元素 在 D3 中,用于选择元素的函数有两个: d3.select():是选择所有指定元素的第一个 d3.sele ...
随机推荐
- 机器学习之Anaconda介绍
Anaconda Distribution 最受欢迎的Python / R数据科学发行版 轻松安装1,400多个Python / R数据科学包并管理您的包,依赖项和 环境 - 只需单击一下按钮即可.免 ...
- ADO.NET学习心得《一》
大家好,我是代号六零一,很高兴又开始重启博客了,为了更好的加深自己的记忆和复习,今天开始坚持写写心得体会,刚开始学习ADO.NET的时候也是一脸懵逼的,代码只有动手敲打才会知道其实并不难,只要多敲几遍 ...
- Dockerfile介绍及指令详情
Dockerfile简介: 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么哪些无法重复的问题.镜 ...
- Nginx使用反向代理实现负载均衡
Nginx使用反向代理实现负载均衡 yls 2019-9-20 简介 基于docker容器以及docker-compose,所以需要自学docker在linux环境的基本使用 使用两个tomcat作为 ...
- [LC]88题 Merge Sorted Array (合并两个有序数组 )
①英文题目 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. N ...
- celery 启用worker ValueError: not enough values to unpack
[2018-01-12 19:08:15,545: INFO/MainProcess] Received task: tasks.add[5d387722-5389-441b-9b01-a619b93 ...
- pandas的使用(5)
pandas的使用(5)-- 缺失值的处理
- ndk编译出来的executable动态库入口函数的参数错乱
早些时间用ndk编译带main入口函数的动态库,测试可运行.今天要作它用时,发现在这个入口函数并没有传入正确的参数. hello.cpp有main函数,用ndk分别编译成可执行文件和动态库文件,使两者 ...
- 50.Qt-QJsonDocument读写json
QJsonDocument: 提供一种读取和写入JSON文档的方法,可以通过它的的成员函数array()或object()检索文档中包含的数组或对象,然后读取JSON数据,或者修改数据. QJsonO ...
- 宋宝华: Linux内核编程广泛使用的前向声明(Forward Declaration)
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者:宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前向声明 编程定律 先强调一点:在一切可 ...