数据绑定(二)(翻译)

数据

改变属性的注意事项:

现在我们知道了数据绑定,下面我们看看对象如何支持自动属性改变. 当我们在程序中改变对象的数据,很难让我们知道控件的改变.UI和对象可以得到我们看不到的正确数据.

我们需要的是对象在任何时间提醒UI,属性值的改变.而这些我们可以通过事件的声明来

体现,当数据绑定时,数据绑定是根据事件的的属性改变,这些属性是对象的属性名称.

举例:我们刚才的ORDER类定义了一个ID属性,当数据绑定到控件时,绑定就开始倾听

ID属性改变这个事件.ID改变事件发生,则相应的对象也改变.

我们可以通过声明这些事件来说明我们的ORDER类:

Public Class Order
Public Event IDChanged As EventHandler
Public Event CustomerChanged As EventHandler
这些事件通过EventHandler来声明.这就需要数据绑定知道这些事件,如果我们不声明

这些事件的话,当数据绑定时候就会产生例外.在WINDOWS窗口中EVENTHANDLE

是一个标准的事件模型.这些事件是通过sender和EVENT来定义的.利用事件声明,我们确保

属性变化时,事件也要产生.SET中是最佳时期,我们利用ID属性来实现一下:

Public Property ID() As String
Get
Return mID
End Get
Set(ByVal Value As String)
mID = Value
RaiseEvent IDChanged(Me, New EventArgs())
End Set
End Property
我们建立一个触发器来捕捉ID属性的任何时候任何地方的变化,很多的类是通过SET方法来给变量付值的.这就需要我们及时的事件来出发这些值的改变.举个比较好的例子,ORDER类有很多的LINEITEM连接对象,先让我们看看LINEITEM类的变量声明:

Public Class LineItem
Public Event ProductChanged As EventHandler
Public Event QuantityChanged As EventHandler
Public Event PriceChanged As EventHandler
Public Event AmountChanged As EventHandler

Private mProduct As String
Private mQuantity As Integer
Private mPrice As Double
有四个事件,但只有三个有变量, Amount 属性通过数量和价格来计算.

Public ReadOnly Property Amount() As Double
Get
Return mQuantity * mPrice
End Get
End Property
这是一个只读属性,但我们可改动.事实上其他价格数量的改变它也随之改变,因此我们需要事件来捕捉它,例如价格改变:

Public Property Price() As Double
Get
Return mPrice
End Get
Set(ByVal Value As Double)
mPrice = Value
RaiseEvent PriceChanged(Me, New EventArgs())
RaiseEvent AmountChanged(Me, New EventArgs())
End Set
End Property
由于价格的改变,我们不光做PRICECHANGED事件,还要触发事件,这样才能使AMOUNT属性改变的正确.这些代码是我们能够及时发现数据变动的事件.

那就是说我们的AMOUNTCHANGED事件不要严格,当数据绑定到对象属性上时,数据绑定是倾听PROPERTYCHANGED事件.一旦这些时间触发,对象的控件就会更新.

换句话说,如果窗体控件绑定到PRICE和AMOUNT属性上,窗体触发的PRICECHANGED

事件,不光是使PRICE属性更新,同样AMOUNT属性也得到了更新.

如果我们仅仅绑定AMOUNT,UI由于没出发AMOUNTCHANGED事件使得我们的UI不能正常工作,正是这个原因,我们需要为每个属性声明PROPERTYCHANGED事件.

时间: 2024-12-24 10:55:47

数据绑定(二)(翻译)的相关文章

数据绑定(翻译)

数据 中文信息: 数据绑定和控件的介绍 当微软公司开发出窗体控件和网页控件时,它就拼命的实现数据绑定.当时还是使用的是vb,他们就进行了大篇幅的功能程序编辑. 最有效的数据绑定不是我们说的dataset,而是对象,结构和对象集.数据绑定有个显著的特点:网页中实现数据绑定的控件,我们不要对它进行其他的操作.数据绑定后只有读的操作,没其他的操作,也就是说,控件把数据源的信息拿过了,只是用用的,不能操作.而我们在建其他的对象或UI时,不需要关心它,而它的操作是一目了然的. WINDOWS窗体控件数据绑

Windows Forms中的数据绑定(二)

window|数据 运行我们运行这个程序来看看是否国家可以正常的显示了.1. 按下F5来运行程序.2. 点击Countries下拉框来看看是否国家数据已经可以显示了.如果正常的话,你就可以看到如下图8所示的程序: 图8.使用ComboBox来显示小数据集可以提高性能带参数的查询来显示数据现在已经可以看到ComboBox中的国家数据了,接着我们就来做选择ComboBox中的一个国家,在DataGrid中只显示这个国家的客户资料.我们按照这些步骤来做:1. 把form的load事件中读取DataGr

一句代码实现批量数据绑定[上篇]

对于一个以数据处理为主的应用中的UI层,我们往往需要编写相当多的代码去实现数据绑定.如果界面上的控件和作为数据源的实体类型之间存储某种约定的映射关系,我们就可以实现批量的数据绑定.为了验证这种想法,我写了一个小小的组件.这个小玩意仅仅是我花了两个小时写的,其中还有很多问题没有解决,比如对于空值的处理,特殊控件属性值的HTML编码问题,以及频繁反射的性能问题,仅仅演示一种解决思路而已.本篇着重介绍如何通过这个组件来解决我们在进行数据绑定过程中的常见问题,下篇会介绍它的设计.[源代码从这里下载] 目

一句代“.NET技术”码实现批量数据绑定[上篇]

对于一个以数据处理为主的应用中的UI层,我们往往需要编写相当多的代码去实现数据绑定.如果界面上的控件和作为数据源的实体类型之间存储某种约定的映射关系,我们就可以实现批量的数据绑定.为了验证这种想法,我写了一个小小的组件.这个小玩意仅仅是我花了两个小时写的,其中还有很多问题没有解决,比如对于空值的处理,特殊控件属性值的HTML编码问题,以及频繁反射的性能问题,仅仅演示一种解决思路而已.本篇着重介绍如何通过这个组件来解决我们在进行数据绑定过程中的常见问题,下篇会介绍它的设计.[源代码从这里下载] 目

一起谈.NET技术,一句代码实现批量数据绑定[上篇]

对于一个以数据处理为主的应用中的UI层,我们往往需要编写相当多的代码去实现数据绑定.如果界面上的控件和作为数据源的实体类型之间存储某种约定的映射关系,我们就可以实现批量的数据绑定.为了验证这种想法,我写了一个小小的组件.这个小玩意仅仅是我花了两个小时写的,其中还有很多问题没有解决,比如对于空值的处理,特殊控件属性值的HTML编码问题,以及频繁反射的性能问题,仅仅演示一种解决思路而已.本篇着重介绍如何通过这个组件来解决我们在进行数据绑定过程中的常见问题,下篇会介绍它的设计.[源代码从这里下载] 目

一句代码实现“.NET研究”批量数据绑定[上篇]

对于一个以数据处理为主的应用中的UI层,我们往往需要编写相当多的代码去实现数据绑定.如果界面上的控件和作为数据源的实体类型之间存储某种约定的映射关系,我们就可以实现批量的数据绑定.为了验证这种想法,我写了一个小小的组件.这个小玩意仅仅是我花了两个小时写的,其中还有很多问题没有解决,比如对于空值的处理,特殊控件属性值的HTML编码问题,以及频繁反射的性能问题,仅仅演示一种解决思路而已.本篇着重介绍如何通过这个组件来解决我们在进行数据绑定过程中的常见问题,下篇会介绍它的设计.[源代码从这里下载] 目

AngularJS实用开发技巧(推荐)_AngularJS

一.开端 Angular JS 是一组用来开发Web页面的框架.模板以及数据绑定和丰富UI组件.它提供web应用的架构,无需进行手工DOM操作. AngularJS很小,只有60K,兼容主流浏览器,与jQuery 配合良好. 二.基础原则了解 ①angular的一些入门了解 一.基础知识 1.angular放弃了IE8 2.四大核心分别是mvc.模块化.指令系统.双向数据绑定 二.一些原则 1.不要复用controller,一个控制器一般只负责一小块视图. 2.不要在controller里面操作

浅析咖啡机行业企业站的原创软文如何撰写

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 随着度娘算法的不断更新从绿萝算法到石榴算法再到绿萝算法2.0的演变,导致以往的seo以外链为皇的时代已经成为过去,现在而是内容为皇的时代了,百度站长平台也强调建设高质量的内容才是王道,才能使网站稳健的发展最终才会获得更多的有效流量.网站才会获得良好的排名,在以往很多站长朋友在做网站内容建设时多为是以伪原创为主,但是在算法的打击下现在伪原创做不

一句代码实现批量数“.NET研究”据绑定[上篇]

对于一个以数据处理为主的应用中的UI层,我们往往需要编写相当多的代码去实现数据绑定.如果界面上的控件和作为数据源的实体类型之间存储某种约定的映射关系,我们就可以实现批量的数据绑定.为了验证这种想法,我写了一个小小的组件.这个小玩意仅仅是我花了两个小时写的,其中还有很多问题没有解决,比如对于空值的处理,特殊控件属性值的HTML编码问题,以及频繁反射的性能问题,仅仅演示一种解决思路而已.本篇着重介绍如何通过这个组件来解决我们在进行数据绑定过程中的常见问题,下篇会介绍它的设计.[源代码从这里下载] 目