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 ...
随机推荐
- 手把手带你实战下Spring的七种事务传播行为
目录 本文目录 一.什么是事务传播行为? 二.事务的7种传播行为 三.7种传播行为实战 本文介绍Spring的七种事务传播行为并通过代码演示下. 本文目录 一.什么是事务传播行为? 事务传播行为(pr ...
- Opencv python(3)| cv. VideoCapture.get() 参数介绍
cv2.VideoCapture.get () 的 (0-18)参数 cv2.VideoCapture.get(0) 视频文件的当前位置(播放)以毫秒为单位 cv2.Video ...
- git 设置不用每次都输入 账号密码
执行命令 git config --global credential.helper store 然后,下次再输入一次 账号密码 就可以了.
- Http帮助类(史上最详细帮助类)
分享一波干活,HttpHelper(支持设置获取Cookie和设置SSL证书) 代码 /// <summary> /// Http连接操作帮助类 /// </summar ...
- 史上最详细的C语言冒泡排序算法
未经同意,请勿转载. void bubbing(){ ] = {,,,,,,,,,};//define init the array //going to the exinternal loop,st ...
- Centos 7.X 安装及常规设置
一.制作USBHDD+启动 需要工具: UltraISO(软碟通) U盘 centos7镜像: http://www.centos.org 二.安装(有坑) U盘启动电脑,进入安装界面: 选中第一项, ...
- SqlServer2005 查询 第一讲 计算列
数据库查询[最重要且在数据库中难度最大] 声明一下我这里用的数据库样例是郝斌老师的(scott库) 我尽最大努力把复杂的问题简单化,方便理解,希望我写的东西能够帮助到你们 有些复杂的东西我我用自己的方 ...
- 一个简单的C#爬虫程序
这篇这篇文章主要是展示了一个C#语言如何抓取网站中的图片.实现原理就是基于http请求.C#给我们提供了HttpWebRequest和WebClient两个对象,方便发送请求获取数据,下面看如何实 1 ...
- hdu 1907 John (尼姆博弈)
John Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- 就该这样理解 OSI 七层参考模型、浅谈不同局域网之间的通信
简介 说到OSI参考模型,理解网络与网络之间的关系,不说太深入难以理解的东西,只求能最大程度上理解与使用. 参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为O ...