WPF的資料繫結(三)

2021-08-22 04:46:34 字數 2307 閱讀 3385

這次我們來學習新的繫結知識,xml資料繫結。xmldataprovider 用來繫結 xml 資料,該xml資料可以是嵌入.xmal檔案的 xmldataprovider 標記中,也可以是外部位置引用的檔案中。

當然嵌入式 xml 內容必須置於 xmldataprovider 內部的 標記中,而且不容易修改,所以建議使用xml資料檔案形式。對於 xmldataprovider 必須命名乙個 x:key 值,以便資料繫結目標可對其進行引用。

xmldataprovider 也可以指向 xml 內容的外部源。例如,專案中乙個 colors.xml 檔案,檔案的內容就是乙個顏色列表。需要在 

中新增乙個 xmldataprovider 資源,並將其的source設定為 xml 檔名即可。 **與xml檔案如下。

xml檔案:

<?xml version="1.0" encoding="utf-8" ?>

資源繫結語法與控制項繫結語法略有不同。繫結到控制項時,可以設定繫結的 elementname 和 path 屬性。但是繫結到資源時,需要設定 source 屬性,由於我們是繫結到 xmldataprovider,所以還要設定繫結的 xpath 屬性。例如,下列**可將 listbox 的項繫結 mycolors資源。將 source 屬性設定為資源,並將其指定為名為 mycolors 的 staticresource。xpath 屬性指示項會繫結到 xml 資料來源中 元素的name屬性:

結果如下圖:

雖然 xmldataprovider 對 xml 非常有用,但是當您想繫結到物件或物件列表時,可以建立 objectdataprovider 作為資源。objectdataprovider 的 objecttype 指定將提供資料繫結源的物件,而 methodname 則指示為獲得資料而需呼叫的方法。例如,假設我有乙個名為 studentservice 的類,該類使用一種名為 getstudentlist的方法來返回列表 。那麼 objectdataprovider 應該如下所示:

objectdataprovider 還可以使用許多其他屬性。constructionparameters 屬性允許您將引數傳遞給要呼叫的類的建構函式。此外,可以使用 methodparameters 屬性來指定引數,同時還可以使用 objectinstance 屬性來指定現有的物件例項作為源。

如果希望非同步檢索資料,可以將 objectdataprovider 的 isasynchronous 屬性設為 true。這樣,使用者將可以在等待資料填充繫結到 objectdataprovider 的源的目標控制項時與螢幕進行互動。

在新增 objectdataprovider 時,必須限定資料來源類的命名空間。在本例中,我必須將 xmlns 屬性新增到 標記中,以便 local 快捷方式符合要求,並指示正確的命名空間:

既然資料來源已通過 objectdataprovider 定義,接下來就是如何將資料顯示在 listbox 控制項。我要把姓名、年齡、出生日期、國籍在每個 listboxitem 中一行顯示。姓名用粗體,年齡、出生日期、國籍使用預設字型顯示。這在 xaml 中,通過使用資料模板(datatemplate)很容易實現的,datatemplate 允許您定義自己的顯示樣式。

如下**,在xaml**中我將 datatemplate 定義成如何顯示student資訊的布局樣式。我通過設定 datatemplate 的 datatype 屬性為students,告訴 datatemplate 將要引用 student型別。

我將物件資料students繫結到 listbox 的 itemssource 屬性,這樣就把將資料繫結到 listbox了,但是我沒有指定如何顯示繫結的資料,顯示樣式是通過將 itemtemplate 屬性設定為 studentlayout資源(即 datatemplate 的鍵名),就可以根據我之前在模板中設計的顯示樣式顯示資料了。最終結果如下圖所示。

c#**如下:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;}}

WPF資料繫結(三)

1 itemsource繫結 我們經常遇到這種需求,乙個列表裡面顯示一些資料,點選其中一條,顯示其關聯的資料,比如說,在列表中顯示學生的姓名,點選某乙個學生的姓名以後,會在textbox中顯示出該學生的學號。如下圖所示 列表中顯示了學生的性命,點選其中乙個學生,就會顯示其學號。1 tabitem h...

wpf 資料繫結

1,資料繫結的幾種方式 重點解釋以下幾點 1,目標物件的屬性是依賴項屬性.2,對於default方式,當目標屬性可以設定時,則是雙向繫結,否則是單向繫結.2,使用 繫結和解除繫結 binding binding new binding binding.source silderfontsize 繫結...

WPF資料繫結 用XAML繫結

用xaml繫結 wpf元素不僅是資料繫結的目標,它還可以是繫結的源。可以把乙個wpf元素的源屬性繫結到另乙個wpf元素的目標屬性上。elementname指向繫結源,path指向源屬性 此處checkbox為繫結源,ischecked為源屬性,label為目標 除了用xaml 定義繫結資訊之外,還可...