資料繫結(二)(翻譯)

來源:互聯網
上載者:User
資料 改變屬性的注意事項:

現在我們知道了資料繫結,下面我們看看對象如何支援自動屬性改變. 當我們在程式中改變對象的資料,很難讓我們知道控制項的改變.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事件.



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。