學習WPF 元素繫結

2021-09-22 19:08:20 字數 2496 閱讀 7959

概念

從源物件提取一些資訊,並用這些資訊設定目標物件的屬性

示例

在給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引入了依賴屬性,資料繫結就是從源物件中提取資料,然後展示到使用者介面,源物件可以是元素,可以是資料庫中的內容,或者其他的一些資料物件,而其中從元素繫結是最簡單的一種,就是...