首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WPF 主從式繫結實作:Families、Family、People、Person 多層級資料導航

     編輯:關於.NET

主從式繫結的核心概念

主從式繫結是一種過濾形式:主頁面列表(如客戶清單)選取特定項目時,從頁面顯示該項目關聯的詳細資料(如該客戶的訂單)。本範例使用 Families(家族集合)→ Family(家族)→ People(成員集合)→ Person(人員)的四層資料結構來示範。

資料模型定義(範例 4-47)

public class Families : ObservableCollection<Family> {}
public class Family {
  public string FamilyName { get; set; }
  public People Members { get; set; }
}
public class People : ObservableCollection<Person> {}
public class Person {
  public string Name { get; set; }
  public int Age { get; set; }
}

XAML 資料宣告與第一層繫結(範例 4-48、4-49)

在 Window.Resources 中宣告 Families 資料,包含兩個 Family(Stooge 家族與 Addams 家族),各自擁有多位 Person 成員。主頁面 ListBox 繫結到 Families 集合,顯示 FamilyName,並設定 IsSynchronizedWithCurrentItem="True" 以同步當前選取項目。

第二層主從繫結:顯示家族成員(範例 4-50)

從頁面 ListBox 的 ItemsSource="{Binding Path=Members}" 繫結到當前選取 Family 的 Members 屬性。標題區使用 TextContent="{Binding Path=FamilyName}" 顯示當前家族名稱。執行結果如圖 4-21 所示,選取不同家族時,成員清單自動更新。

第三層主從繫結:Person 特質清單(範例 4-51 至 4-53)

擴充 Person 類別加入 Traits 屬性(ObservableCollection<Trait>),每個 Trait 有 Description。XAML 中第三欄 ListBox 使用 ItemsSource="{Binding Path=Members/Traits}" 繫結到當前 Person 的特質集合。標題使用 TextContent="{Binding Path=Members/Name}" 顯示當前人員姓名。斜線 / 在繫結路徑中作為層級分隔符,每一層假定為「當前選取項目」。

多層級繫結路徑語法說明

  • Families 欄標題:硬編碼 "Families:"
  • Members 欄標題:{Binding Path=FamilyName}(當前 Family)
  • Traits 欄標題:{Binding Path=Members/Name}(當前 Family 的當前 Person)
  • ListBox ItemsSource 同理遞延:Members/Traits
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved