WPF學習 繫結

2021-09-06 11:56:56 字數 3705 閱讀 3781

原文

一。繫結到元素物件

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由於有了依賴屬性,那麼屬性...