WPF將控制項繫結到集合

2021-09-25 13:31:17 字數 1389 閱讀 8270

什麼是集合檢視?

集合檢視是位於繫結源集合頂部的一層,您可以通過它使用排序、篩選和分組查詢來導航和顯示源集合,而無需更改基礎源集合本身。集合檢視還維護著乙個指向集合中的當前項的指標。如果源集合實現了 inotifycollectionchanged 介面,則collectionchanged 事件引發的更改將傳播到檢視。

如果將控制項直接繫結到集合,則 wpf 會繫結到其預設檢視。此預設檢視由直接到同一集合的所有繫結共享,因此乙個繫結控制項或**對預設檢視所做的更改(如排序或對當前項指標的更改)會反映在到同一集合的所有其它繫結中。

演示共享集合檢視

有時使用itemscontrol控制項顯示物件集合,當選中其中一項時,顯示其詳細資訊,如下圖所示:

該方案很好的演示了幾個直接繫結到同一集合的控制項如何共享同一預設集合檢視。集合檢視維持乙個當前項指標,當在listbox中選擇項時,集合檢視同步更改當前項指標,從而影響到繫結到該檢視的所有顯示。

itemscontrol型別的控制項(如listbox),繫結到整個集合,而contentcontrol(如button)則繫結到檢視的當前項,path值中的斜槓(「/」)字元用於指定檢視的當前項。在下面的示例中,資料上下文是乙個集合檢視。第一行繫結到集合。第二行繫結到集合中的當前項。第三行繫結到集合中的當前項的 description 屬性。

下面的**定義了contentcontrol繫結資料的顯示模板

下面的**演示繫結到集合

演示如何建立集合檢視

如果不想共享乙個檢視,可以建立乙個新檢視,下面**演示建立了乙個集合檢視的靜態資源:

collectionviewsource 是 collectionview 類或從 collectionview 派生的類的**。collectionviewsource 使 xaml **能夠設定常用的 collectionview 屬性,從而將這些設定傳遞到基礎檢視。collectionviewsource 具有乙個儲存實際檢視的 view 和乙個儲存源集合的source 屬性。

然後可以將控制項繫結到該檢視:

在**中獲取集合檢視的方式是:

(listcollectionview) view=(listcollectionview)collectionviewsource.getdefaultview(rootelement.datacontext);

WPF 將控制項繫結到變數

看了好多部落格,發現很多都不能用,嘿嘿,自己終於實現了 廢話不多說,上 xaml 如下 xmlns xmlns x xmlns d xmlns mc mc ignorable d title mainwindow height 350 width 525 loaded window loaded l...

WPF常用資料繫結控制項集合

1 怎麼用listview控制項把xml中的資料在介面上顯示出來?1.0 encoding utf 8 yellow 男血性 女 溫柔 containercontrol.mainwindow xmlns xmlns x title mainwindow height 350 width 525 hu...

WPF常用資料繫結控制項集合

1 怎麼用listview控制項把xml中的資料在介面上顯示出來?1.0 encoding utf 8 yellow 男血性 女 溫柔 containercontrol.mainwindow xmlns xmlns x title mainwindow height 350 width 525 hu...