溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

集合對(duì)象的數(shù)據(jù)綁定(2)

發(fā)布時(shí)間:2020-07-04 12:51:40 來(lái)源:網(wǎng)絡(luò) 閱讀:179 作者:windows_phone 欄目:開(kāi)發(fā)技術(shù)

 3、建立主從視圖

對(duì)于兩個(gè)主從關(guān)系的ListBox,容易想到的一種方法是將第二個(gè)ListBox的數(shù)據(jù)源綁定為第一個(gè)ListBoxSelectedItem,或者通過(guò)第一個(gè)ListBoxSelectionChanged事件來(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。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI