使用DataContext和ItemsSource将数据源绑定到ListView上的区别
在最近的一个项目中,将DataView类型的数据源绑定到ListView控件时,发现当DataView的内容发生变化时,前台的ListView控件的内容并没有发生改变,在这里我先贴出前台要绑定数据源的控件,然后再做进一步分析。
<ListView Name="alarmListView" ItemsSource="{Binding}" Background="AliceBlue" HorizontalAlignment="Left" Width="1280"
ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource myControlTemplateStyle}">
<GridViewColumn Header="案件类型" Width="260" CellTemplate="{StaticResource GridViewCellTemplate}"></GridViewColumn>
<GridViewColumn Header="办理人员" Width="260" CellTemplate="{StaticResource GridViewCellTemplate1}"></GridViewColumn>
<GridViewColumn Header="案件概述" Width="260" CellTemplate="{StaticResource GridViewCellTemplate2}"></GridViewColumn>
<GridViewColumn Header="咨询内容" Width="260" CellTemplate="{StaticResource GridViewCellTemplate3}"></GridViewColumn>
<GridViewColumn Header="办结日期" Width="260" CellTemplate="{StaticResource GridViewCellTemplate4}"></GridViewColumn>
<GridView.ColumnHeaderTemplate>
<DataTemplate>
<TextBlock FontFamily="Microsoft YaHei" FontSize="35" Foreground="White" Background="#333" Width="275" HorizontalAlignment="Center" TextAlignment="Center">
<TextBlock.Text>
<Binding/>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</GridView.ColumnHeaderTemplate>
</GridView>
</ListView.View>
</ListView>
在刚开始的时候,我通过定义一个DataView类型的数据源SourceDataView,使用alarmListView.DataContext=SourceDataView进行数据绑定,当我们改变SourceDataView的时候,界面的数据并没有更新,那么要使界面的数据进行更新,那么数据源类型必须实现了INotifyPropertyChanged接口,通过查找官方文档,这个接口是这样进行定义的:INotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。那么我们看看该接口中都定义了些什么,在该接口中定义了一个事件 public event PropertyChangedEventHandler PropertyChanged,该事件在属性更改时发生,所以要想数据源更新时界面的数据进行更新,那么该数据源必须具备通知的性质,但是我们的数据源类型是DataView类型,但是回到DataView的定义,DataView : MarshalByValueComponent, IBindingListView, IBindingList, IList, ICollection, IEnumerable, ITypedList, ISupportInitializeNotification, ISupportInitialize所以DataView并没有实现INotifyPropertyChanged接口,所以即使数据源SourceDataView发生改变的时候,界面也不会发生变化的,这点需要我们注意。所以我们通常在进行数据绑定的时候,通常是让一个类实现INotifyPropertyChanged接口,然后将类的某几个属性绑定前台,这里多的情况就不再赘述。
所以上述的方法能够进行一次绑定,但是当数据源变化时并不会更新到界面,所以最后使用ItemsSource属性进行绑定,而不是使用DataContext进行绑定,这样就可以了,所有从ItemsControl继承的控件都拥有该属性,我们直接将数据作为数据源绑定到ListView控件上就可以啦,这篇文章的主要目的在于分析进行数据源绑定的时候数据源的一些特性,这里需要谨记。
使用DataContext和ItemsSource将数据源绑定到ListView上的区别的更多相关文章
- C#窗体:关于DataGridView的数据源绑定字符串两个值得注意的问题
无意间遇到的问题,然后就GOOGLE了下,搜到些资料,总结整理如下(注:是转载的) 1. LINQ的查询结果无法直接作为DataGridView的数据源 DataGridView的DataSource ...
- C#中数据源绑定DataSource以及相关控件(DataGridView)的使用总结
我们在编程过程中,会涉及到表格数据的显示,存储等,就可能涉及到DataGridView,DataSource, DataTable等概念. 下面我就我自己模糊的一些知识点串讲以下: 1)首先我要讲的是 ...
- vb.net中将DataGridView与数据源绑定
在< .net中将DataGridView内的数据导出为Excel表格>中说了如何导出数据到Excel,今天这篇文章将讲述如何绑定数据源,在控件中显示我们需要的信息. 在敲机房收费系统的时 ...
- GridView绑定数据源 绑定DataReader /DataSet /DataTable
有一个GridView1 <asp:GridView ID="GridView1" runat="server"></asp:GridView ...
- Spring Boot + Druid 多数据源绑定
date: 2019-12-19 14:40:00 updated: 2019-12-19 15:10:00 Spring Boot + Druid 多数据源绑定 版本环境:Spring Boot 2 ...
- iNeuOS工业互联网操作系统,增加搜索应用、多数据源绑定、视图背景设置颜色、多级别文件夹、组合及拆分图元
目 录 1. 概述... 2 2. 搜索应用... 2 3. 多数据源绑定... 3 4. 视图背景设置颜色... 4 5. 多级别文件夹 ...
- UWP 双向绑定,在ListView中有个TextBox,怎么获取Text的值
要求:评论宝贝的时候一个订单里面包含多个产品,获取对产品的评论内容哦 1. xaml界面 <ListView x:Name="lvDetail"> <ListVi ...
- 一个可以将 json 字符串 直接绑定到 view 上的Android库
android-data-binding 这是一个可以将 json 字符串 直接绑定到 view 上的库, 不用先将 json 转换为 model 类. 传送门(https://github.com/ ...
- wemall app商城源码Android 获取XML网络数据并绑定到ListView
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享Android 获取XML网络数据并绑定到Li ...
随机推荐
- 关于pyquery小知识点
#表示的是取html中的id元素, . 表示的是取html中的class元素. 如果是标签,就直接用标签名 而它们之间的空格,则表示嵌套关系 单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪 ...
- PySpider HTTP 599: SSL certificate problem错误的解决方法
在用 PySpider 爬取 https 开头的网站的时候遇到了 HTTP 599: SSL certificate problem: self signed certificate in certi ...
- JavaScript高级程序设计学习(四)之引用类型(续)
一.Date类型 其实引用类型和相关的操作方法,远远不止昨天的所说的那些,还有一部分今天继续补充. 在java中日期Date,它所属的包有sql包,也有util包.我个人比较喜欢用util包的.理由, ...
- Android学习之多触点滑动
知识点: 1.对矩阵:Matrix类熟悉,链接:https://blog.csdn.net/jdsjlzx/article/details/52741445 2.MotionEvent详解:https ...
- Image Restoration[Deep Image Prior]
0.背景 这篇论文是2017年11月29号第一次提交到arxiv并紧接着30号就提交了V2版本的. 近些年DCNN模型在图像生成和修复上面表现很好,大部分人认为好的原因主要是由于网络基于大量的图片训练 ...
- 4.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—目录结构
Unix风格的目录结构通常使用一个目录名列表并用正斜杠分隔来表示,这样我们可以结合ls命令: $ ls /Users/mhartl/ruby 或者 $ ls /usr/local/bin 正如图20, ...
- 读取Excel的记录并导入SQL数据库
准备一下,近段时间,需要把Excel的数据导入数据库中. 引用命名空间: using System.Configuration; using System.Data; using System.Dat ...
- NOI Day2线上同步赛崩盘记
Preface 蒟蒻愉快的NOI线上赛Day2之行,不过因为太菜就凉了 这次由于策略&&网络的问题,最后两题都没有交,结果就靠T1稳住拿了75分就回家了. 我真是太菜了. 屠龙勇士 首 ...
- Qt实现软件自动更新的一种简单方法
前言 最近在学习Qt开发上位机,想实现一个检查更新的功能,网上搜索了一大圈,发现实现过程都很复杂,关键是代码看不懂,所以就自己开发一种简单的方式来实现.实现效果如下: 点击"检查更新&quo ...
- 为小米(红米)6A解锁_ROOT_安装天下游虚拟定位教程_已亲身验证通过!附图
第一步骤: 把TeamViewer发给客户 第二步骤: 在自己电脑上购买小米账号:http://shop1.91kami.com/UXWHTEY9KN?cid=1200 要求:(购买邮箱注册账号,需要 ...