在最近的一个项目中,将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上的区别的更多相关文章

  1. C#窗体:关于DataGridView的数据源绑定字符串两个值得注意的问题

    无意间遇到的问题,然后就GOOGLE了下,搜到些资料,总结整理如下(注:是转载的) 1. LINQ的查询结果无法直接作为DataGridView的数据源 DataGridView的DataSource ...

  2. C#中数据源绑定DataSource以及相关控件(DataGridView)的使用总结

    我们在编程过程中,会涉及到表格数据的显示,存储等,就可能涉及到DataGridView,DataSource, DataTable等概念. 下面我就我自己模糊的一些知识点串讲以下: 1)首先我要讲的是 ...

  3. vb.net中将DataGridView与数据源绑定

    在< .net中将DataGridView内的数据导出为Excel表格>中说了如何导出数据到Excel,今天这篇文章将讲述如何绑定数据源,在控件中显示我们需要的信息. 在敲机房收费系统的时 ...

  4. GridView绑定数据源 绑定DataReader /DataSet /DataTable

    有一个GridView1 <asp:GridView ID="GridView1" runat="server"></asp:GridView ...

  5. Spring Boot + Druid 多数据源绑定

    date: 2019-12-19 14:40:00 updated: 2019-12-19 15:10:00 Spring Boot + Druid 多数据源绑定 版本环境:Spring Boot 2 ...

  6. iNeuOS工业互联网操作系统,增加搜索应用、多数据源绑定、视图背景设置颜色、多级别文件夹、组合及拆分图元

    目       录 1.      概述... 2 2.      搜索应用... 2 3.      多数据源绑定... 3 4.      视图背景设置颜色... 4 5.      多级别文件夹 ...

  7. UWP 双向绑定,在ListView中有个TextBox,怎么获取Text的值

    要求:评论宝贝的时候一个订单里面包含多个产品,获取对产品的评论内容哦 1. xaml界面 <ListView x:Name="lvDetail"> <ListVi ...

  8. 一个可以将 json 字符串 直接绑定到 view 上的Android库

    android-data-binding 这是一个可以将 json 字符串 直接绑定到 view 上的库, 不用先将 json 转换为 model 类. 传送门(https://github.com/ ...

  9. wemall app商城源码Android 获取XML网络数据并绑定到ListView

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享Android 获取XML网络数据并绑定到Li ...

随机推荐

  1. 华为交换机常用命令(以s5700-SI为例)

    交换机的三种模式: Access模式: 一般用来连接计算机与交换机. 此模式下有一个PVID就是本端口所属的VLAN号,如果从链路上收到无标签的帧,则打上默认VLAN号,然后发给其他端口,如果从链路上 ...

  2. 基于SaaS的企业数据隐私保护平台

    导读 WireWheel成立于2016年,总部位于华盛顿,该公司致力于降低数据隐私保护合规能力建设的难度,帮助企业来应对复杂.严厉的法案.条例规定.2018年10月,公司获得了PSP Growth领投 ...

  3. nodeJS之Cookie和Session(一)

    nodeJS之Cookie和Session(一) 一:Cookie   HTTP是一个无状态协议,客户端每次发出请求时候,下一次请求得不到上一次请求的数据,那么如何将上一次请求和下一次请求的数据关联起 ...

  4. Omi-router实战 Sorrow.X的web简历

    其实这篇文章,真的没啥写的. 主要是为了学以致用,使用了omi-router写了个,个人简历. 路由demo实战源码:https://github.com/SorrowX/resume_demo de ...

  5. python descriptor 详解

    descriptor简介 在python中,如果一个新式类定义了__get__, __set__, __delete__方法中的一个或者多个,那么称之为descriptor.descriptor有分为 ...

  6. ASP.NET Core 防止跨站请求伪造(XSRF/CSRF)攻击 (转载)

    什么是反伪造攻击? 跨站点请求伪造(也称为XSRF或CSRF,发音为see-surf)是对Web托管应用程序的攻击,因为恶意网站可能会影响客户端浏览器和浏览器信任网站之间的交互.这种攻击是完全有可能的 ...

  7. vue 结合mint-ui Message box的使用方法

    两种方式使用: 一.全局注册 1.在main.js中引入 //引入 import { MessageBox } from 'mint-ui';   //全局使用,挂载到原型上 Vue.prototyp ...

  8. 【知识整理】这可能是最好的RxJava 2.x 入门教程(一)

    一.前言 这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(完结版)[强力推荐] 这可能是最好的RxJava 2.x 入门教程(一) 这可能 ...

  9. CF367C. Hard problem

    链接[http://codeforces.com/group/1EzrFFyOc0/contest/706/problem/C] 题意: 他希望它们按词典顺序排序(就像字典中那样),但他不允许交换其中 ...

  10. 《Linux内核分析》第四周学习总结

    <Linux内核分析>第四周学习总结                         ——扒开系统调用的三层皮 姓名:王玮怡  学号:20135116 理论总结部分: 第一节 用户态.内核 ...