

Java技术
2005: 03 04 05 06 07 08
09 10 11 12
2006: 01 02
Asp.net
2005: 07 08 09 10 11 12
2006: 01 02

改变属性的注意事项:
现在我们知道了数据绑定,下面我们看看对象如何支持自动属性改变. 当我们在程序中改变对象的数据,很难让我们知道控件的改变.UI和对象可以得到我们看不到的正确数据.
我们需要的是对象在任何时间提醒UI,属性值的改变.而这些我们可以通过事件的声明来
体现,当数据绑定时,数据绑定是根据事件的的属性改变,这些属性是对象的属性名称.
举例:我们刚才的ORDER类定义了一个ID属性,当数据绑定到控件时,绑定就开始倾听
ID属性改变这个事件.ID改变事件发生,则相应的对象也改变.
我们可以通过声明这些事件来说明我们的ORDER类:
Public Event IDChanged As EventHandler Public Event CustomerChanged As EventHandler这些事件通过EventHandler来声明.这就需要数据绑定知道这些事件,如果我们不声明
这些事件的话,当数据绑定时候就会产生例外.在WINDOWS窗口中EVENTHANDLE
是一个标准的事件模型.这些事件是通过sender和EVENT来定义的.利用事件声明,我们确保
属性变化时,事件也要产生.SET中是最佳时期,我们利用ID属性来实现一下:
RaiseEvent IDChanged(Me, New EventArgs())我们建立一个触发器来捕捉ID属性的任何时候任何地方的变化,很多的类是通过SET方法来给变量付值的.这就需要我们及时的事件来出发这些值的改变.举个比较好的例子,ORDER类有很多的LINEITEM连接对象,先让我们看看LINEITEM类的变量声明:
有四个事件,但只有三个有变量, Amount 属性通过数量和价格来计算.
这是一个只读属性,但我们可改动.事实上其他价格数量的改变它也随之改变,因此我们需要事件来捕捉它,例如价格改变:
RaiseEvent AmountChanged(Me, New EventArgs())由于价格的改变,我们不光做PRICECHANGED事件,还要触发事件,这样才能使AMOUNT属性改变的正确.这些代码是我们能够及时发现数据变动的事件.
那就是说我们的AMOUNTCHANGED事件不要严格,当数据绑定到对象属性上时,数据绑定是倾听PROPERTYCHANGED事件.一旦这些时间触发,对象的控件就会更新.
换句话说,如果窗体控件绑定到PRICE和AMOUNT属性上,窗体触发的PRICECHANGED
事件,不光是使PRICE属性更新,同样AMOUNT属性也得到了更新.
如果我们仅仅绑定AMOUNT,UI由于没出发AMOUNTCHANGED事件使得我们的UI不能正常工作,正是这个原因,我们需要为每个属性声明PROPERTYCHANGED事件.