使用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 ...
随机推荐
- firewalld
1.查看firewalld防火墙自带的区域名 [root@web ~]# firewall-cmd --get-zones block dmz drop external home internal ...
- Bug 14143011 : ORA-19606: CANNOT COPY OR RESTORE TO SNAPSHOT CONTROL FILE
Bug 14143011 : ORA-19606: CANNOT COPY OR RESTORE TO SNAPSHOT CONTROL FILE [oracle@test]$ tail -f rma ...
- oracle全量、增量备份
采用0221222增量备份策略,7天一个轮回 也就是周日0级备份,周1 2 4 5 6 采用2级增量备份,周3采用1级增量备份 打开控制文件自动备份 CONFIGURE CONTROLFILE AUT ...
- Hibernate validator使用和自定义validator及整合Spring MVC
http://blog.csdn.net/lwphk/article/details/43983669 Hibernate validator使用 导入validation-api-xxx.jar 以 ...
- PAT A1144 The Missing Number (20 分)——set
Given N integers, you are supposed to find the smallest positive integer that is NOT in the given li ...
- HDU2066(SPFA+前向星)
https://vjudge.net/problem/HDU-2066 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白 ...
- Android2.3系统 自定义的PopupWindow在实例化时报空指针异常
情况:是这样的,前段时间做了一个自定义的PopupWindow,就是写一个类,然后继承PopupWindow,别的什么操作都没有,但是在实例化的时候,在2.3系统中直接就报空指针异常(4.0及以上系统 ...
- C#中用OLEDB操作EXCEL时,单元格内容长度超过255被截断
C#中Microsoft.ACE.OLEDB.12.0 驱动读取excel,会读取前8行来判定每列的数据类型,假如没有超过255个字符,那么会被设置为nvarchar(255),从第9行开始,超过25 ...
- Codechef MGCHGYM Misha and Gym 容斥、背包、Splay
VJ传送门 简化题意:给定一个长度为\(N\)的数列,\(Q\)个操作: \(1\,x\,a\).将数列中第\(x\)个元素改为\(a\) \(2\,l\,r\).反转子序列\([l,r]\) \(3 ...
- D. Too Easy Problems
链接 [http://codeforces.com/group/1EzrFFyOc0/contest/913/problem/D] 题意 给你n个题目,考试时间T,对于每个问题都有一个ai,以及解决所 ...