分享
 
 
 

数据绑定(二)(翻译)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

改变属性的注意事项:

现在我们知道了数据绑定,下面我们看看对象如何支持自动属性改变. 当我们在程序中改变对象的数据,很难让我们知道控件的改变.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事件.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有