資料繫結(二)(翻譯)

2021-04-17 08:19:10 字數 2412 閱讀 8163

改變屬性的注意事項:

現在我們知道了

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

seover="window.status='正文--

資料繫結(二)(

翻譯)';return true">

WPF資料繫結(二)

前面講了最近本的兩種資料繫結,這次講講資源繫結和context繫結 1 資源繫結 同樣不需要寫 僅僅需要配置xaml就可以了。1 tabitem header resourcebinding 2 stackpanel 3 stackpanel.resources 4 sys string x key...

Flex資料繫結陷阱 二

嘗試繫結乙個沒有包含ipropertychangenotifier介面的類 實現ipropertychangenotifier介面的類,必須在類改變屬性時派發事件並且任何巢狀類必須作為公共屬性被 因此,你能發現類裡的屬性何時改變了。例如,讓我們來看一下uicomponent類的簽名 見圖3 uico...

Angular 筆記系列(二)資料繫結

資料繫結這塊兒沒啥說的,簡單兩個例子帶過了。hello world 這就是有趣的雙向資料繫結,angularjs 會記錄資料模型所包含的資料在任何特定時間點的值,而不是原始值。當他認為某個值可能發生變化時,就會執行自己的事件迴圈來檢查這個值是否變髒,如果該值從上次事件迴圈之後發生了變化,則該值被認為...