目标:在ListView中,设两列,一列表示人的姓名,一列表示年龄,用ObservableCollection<>来实现。

编程:

1)定义类Person

public class ABC:INotifyPropertyChanged

{

#region INotifyPropertyChanged 成员

public event PropertyChangedEventHandler PropertyChanged;

public void RaisePropertyChanged(string PropertyName)

{

if (PropertyChanged!=null)

{

PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));

}

}

#endregion

private string name;

public string Name

{

get { return name; }

set

{

if (name!=value)

{

name = value;

RaisePropertyChanged("IP");

}

}

}

private int age;

public int Age

{

get { return age; }

set

{

if (age != value)

{

age = value;

RaisePropertyChanged("Age");

}

}

}

public ABC() { }

public ABC(string ip,int age)         {             this.Name = ip;             this.Age = age;         }

2).按照MVVM的模式,设计一个ViewModel,在此类中定义ObservableCollection<>:

public Class PracticeViewModel

{

public ObservableCollection<ABC> collection = new ObservableCollection<ABC>();
        public void InitialCollection()
        {
            collection.Add(new ABC("Betty", 23));
            collection.Add(new ABC("Jully", 24));
            collection.Add(new ABC("Tom", 25));
        }
        public PracticeViewModel()
        {
            InitialCollection();
        }

}

3).定义数据上下文

PracticeViewModel vm = new PracticeViewModel();
            this.DataContext = vm.collection;

4).写xaml代码

<ListView ItemsSource="{Binding}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="姓名"  DisplayMemberBinding="{Binding Name}"/>
                    <GridViewColumn Header="年龄"  DisplayMemberBinding="{Binding Age}"/>
                </GridView>
            </ListView.View>
</ListView>

现在的问题是:还没搞清楚listView的ItemSource里面应该Binding 什么,虽然老师讲了,当时感觉明白了,结果试了试发现还是有问题,继续学习。

MVVM ObservableCollection<> ListView的更多相关文章

  1. “Win10 UAP 开发系列”之 在MVVM模式中控制ListView滚动位置

    这个扩展属性从WP8.1就开始用了,主要是为了解决MVVM模式中无法直接控制ListView滚动位置的问题.比如在VM中刷新了数据,需要将View中的ListView滚动到顶部,ListView只有一 ...

  2. WPF MVVM模式下实现ListView下拉显示更多内容

    在手机App中,如果有一个展示信息的列表,通常会展示很少一部分,当用户滑动到列表底部时,再加载更多内容.这样有两个好处,提高程序性能,减少网络流量.这篇博客中,将介绍如何在WPF ListView中实 ...

  3. 【C#/WPF】ListView的MVVM例子,及禁止拖动ListView的头部Header

    一个ListView的MVVM简单例子: <ListView ItemsSource="{Binding GoodsList}" Margin="0,10,0,10 ...

  4. Mvvm绑定datagrid或listview的selectItems的方法[转]

    单选,很简单,将SelectedItem与ViewModel的属性进行双向绑定就OK了 多选,由于ListView的SelectedItems不能进行绑定,需要将ListView的SelectionC ...

  5. WPF中常用控件(TreeView, ComboBox, DataGrid, ListView)使用MVVM模式绑定的demo

    之前几篇关于TreeView的博客中只是贴了源代码,并没有把整个项目上传到github.最近就想着把我常用的几个控件做成一个demo,这样也方便自己以后查看.本人也是WPF新手,但是我并没有打算就往这 ...

  6. 背水一战 Windows 10 (25) - MVVM: 通过 x:Bind 实现 MVVM(不用 Command)

    [源码下载] 背水一战 Windows 10 (25) - MVVM: 通过 x:Bind 实现 MVVM(不用 Command) 作者:webabcd 介绍背水一战 Windows 10 之 MVV ...

  7. 背水一战 Windows 10 (24) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过非 ButtonBase 触发命令

    [源码下载] 背水一战 Windows 10 (24) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过非 ButtonBase 触发命令 作者:webabcd ...

  8. 背水一战 Windows 10 (23) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过 ButtonBase 触发命令

    [源码下载] 背水一战 Windows 10 (23) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过 ButtonBase 触发命令 作者:webabcd ...

  9. MVVM小记

    这篇小记源自于codeproject上的一篇文章 http://www.codeproject.com/Articles/100175/Model-View-ViewModel-MVVM-Explai ...

随机推荐

  1. 解决IIS上无法添加.NET用户的问题

    最近开发了一个简单的管理后台,后台用户管理都用的是AspNetSqlMembershipProvider这一套框架,添加和删除用户的功能在开发阶段通过ASP.NET网站管理工具完成. 部署到服务器上时 ...

  2. C#文件创建、修改、访问时间修改

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. Deep Learning 24:读论文“Batch-normalized Maxout Network in Network”——mnist错误率为0.24%

    读本篇论文“Batch-normalized Maxout Network in Network”的原因在它的mnist错误率为0.24%,世界排名第4.并且代码是用matlab写的,本人还没装caf ...

  4. iOS开发 二维码生成

    基于libqrencode的二维码生成 + (void)drawQRCode:(QRcode *)code context:(CGContextRef)ctx size:(CGFloat)size { ...

  5. VB检测按键CTRL+C的次数

    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As IntegerPriv ...

  6. 红包demo

    嘿嘿,红包demo import random dic={} lis=['KeLan','MonKey','Dexter','Superman','Iron Man','Robin'] def red ...

  7. k.APR通道特殊配置

    APR/native specific configuration The following attributes are specific to the APR/native connector. ...

  8. List去重复(不是最简单,但绝对是最易理解)

    for (int i = 0; i < courselist.size(); i++) //外循环是循环的次数 { for (int j = courselist.size() - 1 ; j ...

  9. Elasticsearch5.0.1 + Kibana5.0.1 + IK 5.0.1安装记录

    最近工作需要,开始研究ES,当前ES的最新版本为5.0.1,从之前的2.x的版本号一下升级到5.x,主要是之前Elastic的产品版本号因为收购等原因很乱,ES 2.X版本的和Kibana 4.x版本 ...

  10. 20169212《Linux内核原理与分析》 第九周作业

    可执行程序的装载 一.预处理.编译.链接和目标文件的格式 可执行程序是怎么来的?通过以下这个图来呈现过程: 以我们常写的helloworld为例.我们编写了一个helloworld的.c文件,我们来把 ...