溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

集合對象的數據綁定(2)

發布時間:2020-07-04 12:51:40 來源:網絡 閱讀:217 作者:windows_phone 欄目:開發技術

 3、建立主從視圖

對于兩個主從關系的ListBox,容易想到的一種方法是將第二個ListBox的數據源綁定為第一個ListBoxSelectedItem,或者通過第一個ListBoxSelectionChanged事件來設置綁定。

但是,若借助于CollectionViewSource類可能會更方便。

CollectionViewSource是一個集合視圖類,可以根據不同的篩選、排序條件建立同一個集合對象的多個視圖,如同關系數據庫中可以根據不同的篩選排序條件建立同一個數據表的多個視圖一樣。

CollectionViewSource的屬性

(1)       Source:源集合對象

(2)       View:當前視圖

(1)       新建一個DepartList類,該類構造函數中會創建一個包含兩個部門的部門列表,且各個部門下游若干員工。

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="技術部",employees=employee1});

            this.Add(new Department { DepName="商務部",employees=employee2});

}}

2)在新建XAML頁面中添加:xmlns:local="clr-namespace:PhoneApp1"

3)在新建頁面的phone:PhoneApplicationPage.Resources標記下添加一個頁面級資源定義。

<phone:PhoneApplicationPage.Resources>      

   <local:DepartList x:Key="depList"></local:DepartList> <!--DepartList對象的聲明式定義-->

     <CollectionViewSource x:Key="departView" Source="{StaticResource depList}"></CollectionViewSource> <!--CollectionViewSource對象的定義-->

     <DataTemplate x:Key="dtEmployees"> <!--員工列表數據模板的定義-->

          <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="請選擇部門:"  />

<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="工號" />

          <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,代表當前綁定源departView的當前選定項。由于CollectionViewSource會自動識別,因此,在實際使用過程中均可省略,即直接寫作employees。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女