原文
一。繫結到元素物件
1。元素和元素(xaml、**)
1.1xaml格式
目標屬性=""
1.2**:
binding binding = new binding();
binding.source = 源控制項;
binding.path = new propertypath("value"); //源控制項屬性
binding.mode = bindingmode.twoway;
lblsampletext.setbinding(textblock.fontsize, binding); 繫結。
1.3 演示程式…
二。繫結到非元素物件(source/relativesource/datacontext)。
1。source
1.1繫結到靜態物件
fontsize=",
path=靜態物件的屬性}
或者 title=""
1.2繫結到資源。
fontfamily=",
path=資源物件的屬性}"
演示例子…
2。relativesource:根據當前物件為基礎,自動查詢源並繫結。
2.1 ="},
path=title}"
2.2 relativesourcemode列舉值
名 稱描 述
self
表示式繫結到同一元素的另外乙個屬性上(在第10
章介紹了這一技術的乙個示例,其中使用該技術在
觸發命令的控制項中顯示與命令相關聯的文字)
findancestor
表示式繫結到父元素。wpf將會查詢元素樹直到發
現期望的父元素。為了指定父元素,還必須設定
ancestortype屬性指示希望查詢的父元素的型別。
此外,還可以使用ancestorlevel屬性略過發現的一
定數量的特定元素。例如,當在一棵樹中查詢時,
如果希望繫結到第三個listboxitem型別的元素,
應當進行如下設定:ancestortype=,
並且ancestorlevel=3,所以會略過前兩個listboxitem
元素。預設情況下,ancestorlevel屬性設定為1,
並且在找到第乙個匹配的元素時停止查詢
previousdata
表示式繫結到資料繫結列表中的前乙個資料項。
在乙個列表項中會使用這種模式
templateparent
表示式繫結到應用模板的元素。只有當繫結位於一
個控制項模板或資料模板內部時,這種模式才能工作
3。datacontext
所有的子物件可以共享乙個繫結源。
父物件 = datacontext=""
子物件 = fontsize=""
三。繫結的方向
bindingmode列舉值
名 稱描 述
oneway
當源屬性變化時更新目標屬性
twoway
當源屬性變化時更新目標屬性,
並且當目標屬性變化時更新源屬性
onetime
最初根據源屬性值設定目標屬性。然而,
在此之後的所有改變都會被忽略(除非繫結
被設定到乙個完全不同的物件或者呼叫
bindingexpression.updatetarget( )方法,
如在本章後面所介紹的那樣)。通常,如果
知道源屬性不會變化,可以使用這種模式降低開銷
onewaytosource
和onway型別類似,但是方向相反。當目標
屬性變化時更新源屬性(這看起來有點像向後傳遞),
但是目標屬性永遠不會被更新
default
這種型別的繫結依賴於目標屬性。它既可以
是雙向的(對於使用者可以設定的屬性,如
textbox.text屬性),也可以是單向的(對於
所有其他屬性)。除非明確指定了另外一種模式,
否則所有的繫結都使用該模式
方向:
圖16-5 繫結兩個屬性的不同方向
5。重要類
5.1 bindingoperations:清楚繫結、設定繫結、獲取繫結表示式
5.2 bindingexpression:updatesource( )方法和updatetarget( )方法。
5.2.1 獲取
隱藏行號
複製**
?這是一段程式**。
bindingexpression binding = txtfontsize.getbindingexpression(textbox.textproperty);
// update the linked source (the textblock).
binding.updatesource();5.3「x:static」 根據目標物件的型別,從靜態物件、屬性中取值。返回值:物件/數值。
6。總結:
屬性值更改需要實現:inotifypropertychanged
集合更改(新增刪除)需要實現:inotify collectionchanged
元素到元素的繫結依賴於依賴的屬性,註冊依賴屬性時的屬性值變更通知。
四。自定義類
1。更新實現
1.1屬性依賴屬性
1.2inotifypropertychanged
五集合繫結
itemscontrol類中用於資料繫結的屬性(唯一的要求是支援ienumerable介面)
名 稱描 述
itemssource
指向乙個集合,該集合包含所有在列表中顯示的物件
displaymemberpath
標識乙個用於為每個項建立顯示文字的屬性
itemtemplate
接受乙個資料模板,用於為每個項建立視覺化外觀。
這個屬性比displaymemberpath屬性的功能更加強大,
itemscontrol(listbox控制項、combobox控制項以及listview控制項(以及menu控制項和用於顯示層次化資料的treeview控制項))。
二。值轉換器。
ivalueconverter介面的類
轉換繫結的資料
三。資料模板的使用
資料模板通常會被應用到以下幾類控制項來填充其型別為datatemplate的屬性:
· 內容控制項(content control):contenttemplate屬性,控制content的顯示
· 項控制項(items control) : itemtemplate屬性,應用於每個顯示的項
· 頭控制項(header content control) : headertemplate屬性,控制header的展現。
四。檢視
1。過濾
2。排序
3。分組
五。資料提供程式
1。繫結到乙個例項上
1.objectdataprovider可以綁帶建構函式帶引數的物件。
2。可以繫結到方法
23
學習WPF 元素繫結
概念 從源物件提取一些資訊,並用這些資訊設定目標物件的屬性 示例 在給textblock控制項的fontsize屬性賦值時,我們使用了繫結表示式 資料繫結表示式使用xaml的標記擴充套件 因此具有花括號 參見 這裡建立了乙個system.windows.data.binding物件,所以繫結表示式以...
學習WPF 元素繫結
概念 從源物件提取一些資訊,並用這些資訊設定目標物件的屬性 示例 在給textblock控制項的fontsize屬性賦值時,我們使用了繫結表示式 資料繫結表示式使用xaml的標記擴充套件 因此具有花括號 參見 這裡建立了乙個system.windows.data.binding物件,所以繫結表示式以...
WPF學習(19) 資料繫結
wpf有乙個特性,叫做資料驅動,我個人的理解就是把業務邏輯抽出來,變成資料,資料變化來驅動咱們的應用程式。在之前的winform時代,其實已經有了資料繫結,比如我們的datagridview,可以繫結乙個dataset,source直接繫結就可以,原理上來說類似,但是wpf由於有了依賴屬性,那麼屬性...