概念
從源物件提取一些資訊,並用這些資訊設定目標物件的屬性
示例
在給textblock控制項的fontsize屬性賦值時,我們使用了繫結表示式
資料繫結表示式使用xaml的標記擴充套件(因此具有花括號)(參見:)
這裡建立了乙個system.windows.data.binding物件,所以繫結表示式以單詞binding開頭
在本例中只設定了binding物件的兩個屬性elementname和path屬性
elementname
指定源元素
path
指定源元素中的屬性
mode
oneway:
當源屬性變化時,更新目標屬性
twoway:
當源 屬性變化時,更新目標屬性,並且,當目標
屬性變化時,更新源屬性
onetime:
最初根據源屬性值設定目標屬性,其後的所有改變都會被忽略
onewaytosource:
當目標屬性變化時,更新源屬性,源屬性變化時,目標屬性不變
default:
根據目標屬性的設定而定
updatesourcetrigger
如果我們把乙個屬性的值繫結到乙個文字框的text上,那麼只有當這個文字框失去焦點時才會更新目標屬性的值;如果你想實時更新目標屬性的值該如何處理呢?那麼這時就要設定
updatesourcetrigger屬性了,這個屬性有一下幾種可能的情況
propertychange:
當目標屬性發聲變化時立即更新
lostfocus:
當目標屬性發生變化,並且目標失去焦點時更新
explicit:
除非呼叫bindingexpression.updatesource()方法,否則無法更新源
default:
根據目標屬性的設定來確定更新行為,大多數元素都是propertychange設定,但textbox.text屬性是lostfocus設定
delay
有的時候需要延遲一段時間再更新目標屬性的值,此時需要設定delay屬性,單位是毫秒
source
繫結到非元素物件;與elementname互斥
該屬性指向源物件的引用(就是提供資料的物件)
以下**可以繫結到已經存在的物件
以下**可以繫結到已經存在的資源
繫結到非元素物件;與elementname互斥
self:
表示式繫結到同一元素的另一屬性上
findancestor:
表示式繫結到父元素
previousdata:
繫結到資料列表中的前乙個資料項,應用在資料列表元素中
templateparent:
繫結到應用模版的元素,在模版內這種設定才生效
說明
除了繫結到元素的屬性,還可以繫結到元素的屬性的屬性或者存在索引器的屬性
比如:
myelement.property.otherproperty
myelement.property[2]
當繫結到格式不正確的元素屬性上時,wpf並不會因此而編譯不通過
雙向繫結比單向繫結開銷更大,onetime繫結比雙向繫結和單向繫結的開銷都小
盡量使用明確的繫結模式,而不要使用default繫結模式
源屬性改變,通知到目標屬性後,目標屬性還可以作為源屬性,通知下乙個目標屬性,這就是多繫結
使用**建立繫結
在上面的示例中完全可以使用c#**建立繫結
**如下
使用**刪除繫結如果像通過**刪除某乙個元素的繫結,可以通過下面兩種方式完成
使用**檢索繫結
可以使用如下方式獲取乙個元素的繫結物件
使用datacontext繫結
可以先對父元素設定datacontext屬性,然後在子元素中就可以輕鬆的使用父元素設定的datacontext所指向的物件了
修改記錄
2015-1-5:完成一部分內容
參考資料
《pro wpf 4.5 in c# 4th edition》
學習WPF 元素繫結
概念 從源物件提取一些資訊,並用這些資訊設定目標物件的屬性 示例 在給textblock控制項的fontsize屬性賦值時,我們使用了繫結表示式 資料繫結表示式使用xaml的標記擴充套件 因此具有花括號 參見 這裡建立了乙個system.windows.data.binding物件,所以繫結表示式以...
WPF元素繫結筆記
利用元素到元素的繫結實現互動方式的自動化 表示式繫結中,path 可以指向屬性,也可以指向屬性使用的索引器 如content.children 0 可構建具有多級層次的路徑,使其指向屬性的屬性,以此類推 繫結錯誤不會報出異常,但是輸出視窗會有提示 繫結模式 源物件 目標物件 oneway 目標物件 ...
WPF學習(8) 元素繫結
資料繫結是wpf區別於之前的winform重要的一點,雖然winform也有資料繫結,但是無疑wpf的資料繫結更加強大,因為wpf引入了依賴屬性,資料繫結就是從源物件中提取資料,然後展示到使用者介面,源物件可以是元素,可以是資料庫中的內容,或者其他的一些資料物件,而其中從元素繫結是最簡單的一種,就是...