您好,登錄后才能下訂單哦!
3、建立主從視圖
對(duì)于兩個(gè)主從關(guān)系的ListBox,容易想到的一種方法是將第二個(gè)ListBox的數(shù)據(jù)源綁定為第一個(gè)ListBox的SelectedItem,或者通過(guò)第一個(gè)ListBox的SelectionChanged事件來(lái)設(shè)置綁定。
但是,若借助于CollectionViewSource類(lèi)可能會(huì)更方便。
CollectionViewSource是一個(gè)集合視圖類(lèi),可以根據(jù)不同的篩選、排序條件建立同一個(gè)集合對(duì)象的多個(gè)視圖,如同關(guān)系數(shù)據(jù)庫(kù)中可以根據(jù)不同的篩選排序條件建立同一個(gè)數(shù)據(jù)表的多個(gè)視圖一樣。
CollectionViewSource的屬性
(1) Source:源集合對(duì)象
(2) View:當(dāng)前視圖
(1) 新建一個(gè)DepartList類(lèi),該類(lèi)構(gòu)造函數(shù)中會(huì)創(chuàng)建一個(gè)包含兩個(gè)部門(mén)的部門(mén)列表,且各個(gè)部門(mén)下游若干員工。
C#Code
附帶代碼:
public class DepartList: ObservableCollection<Department> { public DepartList() { ObservableCollection<Employee> employee1 = new ObservableCollection<Employee> { new Employee{Number=500,Name="張三",Age=40}, new Employee{Number=501,Name="李四",Age=41}, new Employee{Number=502,Name="王五",Age=42} }; ObservableCollection<Employee> employee2 = new ObservableCollection<Employee> { new Employee{Number=503,Name="周武",Age=40}, new Employee{Number=504,Name="鄭王",Age=41}, new Employee{Number=505,Name="李代",Age=42} }; this.Add(new Department { DepName="技術(shù)部",employees=employee1}); this.Add(new Department { DepName="商務(wù)部",employees=employee2}); }} |
(2)在新建XAML頁(yè)面中添加:xmlns:local="clr-namespace:PhoneApp1"
(3)在新建頁(yè)面的phone:PhoneApplicationPage.Resources標(biāo)記下添加一個(gè)頁(yè)面級(jí)資源定義。
<phone:PhoneApplicationPage.Resources> <local:DepartList x:Key="depList"></local:DepartList> <!--DepartList對(duì)象的聲明式定義--> <CollectionViewSource x:Key="departView" Source="{StaticResource depList}"></CollectionViewSource> <!--CollectionViewSource對(duì)象的定義--> <DataTemplate x:Key="dtEmployees"> <!--員工列表數(shù)據(jù)模板的定義--> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Number}"></TextBlock> <TextBlock Text="{Binding Name}" ></TextBlock> <TextBlock Text="{Binding Age}" ></TextBlock> <TextBlock Text="{Binding BirthYear}" ></TextBlock> </StackPanel> </DataTemplate> </phone:PhoneApplicationPage.Resources> |
(3) 在XAML下附帶代碼如下:
<TextBlock Name="textBlock1" Text="請(qǐng)選擇部門(mén):" /> <ListBox DisplayMemberPath="DepName" ItemsSource="{Binding Source={StaticResource departView}}" Name="listBox1" /> <TextBlock Name="textBlock2" Text="{Binding Path=CurrentItem.DepName,Source={StaticResource departView}}" /> <TextBlock Name="textBlock3" Text="員工列表:" /> <StackPanel Orientation="Horizontal"> <TextBlock Name="textBlock5" Text="工號(hào)" /> <TextBlock Name="textBlock4" Text="姓名" /> <TextBlock Name="textBlock6" Text="年齡" /> <TextBlock Name="textBlock7" Text="出生年份" /> </StackPanel> <ListBox ItemsSource="{Binding Source={StaticResource departView},Path=CurrentItem.employees}" ItemTemplate="{StaticResource dtEmployees}" Name="listBox2" /> |
注意:其中兩處的CurrentItem,代表當(dāng)前綁定源departView的當(dāng)前選定項(xiàng)。由于CollectionViewSource會(huì)自動(dòng)識(shí)別,因此,在實(shí)際使用過(guò)程中均可省略,即直接寫(xiě)作employees。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。