在 .NET Framework WPF 應用程式中建立查閱資料表
注意
資料集和相關類別是 2000 年代初的舊版 .NET Framework 技術,可讓應用程式在應用程式與資料庫中斷連線時使用記憶體中的資料。 這些技術特別適用於可讓使用者修改資料並將變更保存回資料庫的應用程式。 雖然已證明資料集是非常成功的技術,但建議新的 .NET 應用程式使用 Entity Framework Core。 Entity Framework 提供更自然的方式,將表格式資料作為物件模型使用,而且具有更簡單的程式設計介面。
查閱資料表 一詞 (有時稱為 查閱繫結) 是描述一個控制項,它會根據另一個資料表中的外鍵欄位值來顯示資料表中的資訊。 若要建立查閱資料表,您可以將父資料表的主要節點或在 [資料來源] 視窗的物件拖曳至已經繫結至相關子資料表中資料行或屬性的控制項。
例如,試想銷售資料庫中 Orders
的資料表。 Orders
資料表中的每個記錄都包含 CustomerID
,指出哪些客戶下了訂單。 CustomerID
是指向 Customers
資料表中客戶記錄的外鍵。 當您從 Orders
資料表顯示訂單清單時,您可能會想要顯示實際的客戶名稱,而不是 CustomerID
。 因為客戶名稱位於 Customers
資料表中,因此您必須建立查閱資料表以顯示客戶名稱。 查閱資料表會使用 Orders
記錄中的 CustomerID
值來瀏覽關聯性,並傳回客戶名稱。
若要建立查閱資料表
將下列其中一種資料來源類型與相關資料新增至您的專案:
資料集或實體資料模型。
WCF 資料服務、WCF 服務或 Web 服務。 如需詳細資訊,請參閱 如何: 連接至服務中的資料。
物件。 如需詳細資訊,請參閱 在 Visual Studio 中繫結物件。
注意
兩個相關的資料表或物件必須作為專案的資料來源存在,您才能建立查閱資料表。
開啟 WPF 設計工具,並確定設計工具包含一個容器,其為 [資料來源] 視窗中項目的有效置放目標。
如需有效置放目標的詳細資訊,請參閱 將 WPF 控制項繫結至 Visual Studio 中的資料。
按一下 [資料] 功能表上的 [顯示資料來源],以開啟 [資料來源] 視窗。
展開 [資料來源] 視窗中的節點,直到您可以看到父資料表或物件,以及相關的子資料表或物件爲止。
注意
相關子資料表或物件是父資料表或物件下顯示為可展開子節點的節點。
按一下子節點的下拉式清單功能表,然後選取 [詳細資料]。
展開子節點。
在子節點下,按一下把子資料和父資料相關聯的項目之下拉式清單功能表。 (在上述範例中,這是 CustomerID 節點。)選取下列其中一種支援查閱繫結的控制項類型:
ComboBox
ListBox
ListView
注意
如果 ListBox 或 ListView 控制項未出現在清單中,您可以將這些控制項新增至清單。 如需詳細資訊,請參閱 設定從資料來源視窗拖曳時要建立的控制項。
衍生自 Selector 的任何自訂控制項。
注意
如需如何將自訂控制項新增至控制項清單的相關資訊,您可以在 [資料來源] 視窗中選取項目,請參閱 將自訂控制項新增至資料來源視窗。
將子節點從 [資料來源] 視窗拖曳至 WPF 設計工具中的容器。 (在上述範例中,子節點是 訂單 節點。)
Visual Studio 會產生 XAML,針對您拖曳的每個項目建立新的資料繫結控制項。 XAML 也會將子資料表或物件的新 CollectionViewSource 新增至置放目標的資源。 對於某些資料來源,Visual Studio 也會產生程式碼,將資料載入資料表或物件。 如需詳細資訊,請參閱 將 WPF 控制項繫結至 Visual Studio 中的資料。
將父節點從 [資料來源] 視窗拖曳至您稍早建立的查閱繫結控制項。 (在上述範例中,父節點是 客戶 節點)。
Visual Studio 會在控制項上設定一些屬性,以設定查閱繫結。 下列資料表會列出 Visual Studio 修改的屬性。 如有必要,您可以在 XAML 或 [屬性] 視窗中變更這些屬性。
屬性 設定說明 ItemsSource 這個屬性會指定用來取得控制項中所顯示資料的集合或繫結。 Visual Studio 會將此屬性設定為您拖曳至控制項的父資料的 CollectionViewSource。 DisplayMemberPath 這個屬性會指定控制項中顯示的資料項目路徑。 Visual Studio 會將此屬性設定為父資料中的第一個資料行或屬性,在主索引鍵後具有字串資料類型。
如果您想要在父資料中顯示不同的資料行或屬性,請將此屬性變更為不同屬性的路徑。SelectedValue Visual Studio 會將此屬性繫結至您拖曳至設計工具之子資料的資料行或屬性。 這是父資料的外鍵。 SelectedValuePath Visual Studio 會將此屬性設定為父資料之外鍵之子資料之資料行或屬性的路徑。