備註
類別 DataSet 和相關類別是 2000 年代初的舊版 .NET Framework 技術,可讓應用程式在應用程式與資料庫中斷連線時使用記憶體中的數據。 這些技術特別適用於可讓使用者修改數據並將變更保存回資料庫的應用程式。 雖然數據集是經過證實的成功技術,但新 .NET 應用程式的建議方法是使用 Entity Framework Core。 Entity Framework 提供更自然的方式,以表格式數據作為物件模型使用,而且具有更簡單的程序設計介面。
您可以將數據系結至 WPF 控制項,向應用程式的使用者顯示數據。 若要建立這些數據綁定控件,您可以將專案從 [數據源 ] 視窗拖曳至 Visual Studio 中的 WPF 設計工具。 本主題描述可用來建立數據系結 WPF 應用程式的一些最常見工作、工具和類別。
如需如何在Visual Studio中建立數據綁定控件的一般資訊,請參閱 將控件系結至Visual Studio中的數據。 如需 WPF 數據系結的詳細資訊,請參閱 數據系結概觀。
將 WPF 控件系結至數據時所涉及的工作
下表列出可將專案從 [數據源 ] 視窗拖曳至 WPF 設計工具來完成的工作。
| 任務 | 詳細資訊 |
|---|---|
| 建立新的數據綁定控件。 將現有的控件系結至數據。 |
將 WPF 控制項系結至數據集 |
| 建立在父子關聯性中顯示相關數據的控件:當使用者在某個控件中選取父數據記錄時,另一個控件會顯示所選取記錄的相關子數據。 | 在 WPF 應用程式中顯示相關資料 |
| 建立一個 查閱表,根據另一個數據表中外鍵欄位的值,顯示相關數據表的資訊。 | 在 WPF 應用程式中建立查閱表格 |
| 將控件系結至資料庫中的映像。 | 將控件系結至資料庫中的圖片 |
有效的置放目標
您只能在 資料源 視窗中將項目拖曳至 WPF 設計工具中的有效拖放目標。 有效置放目標有兩種主要類型:容器和控件。 容器是使用者介面專案,通常包含控制件。 例如,方格是容器,因此是視窗。
產生的 XAML 和程式碼
當您將專案從 [數據源 ] 視窗拖曳至 WPF 設計工具時,Visual Studio 會產生 XAML 來定義新的數據綁定控件(或將現有的控件系結至數據源)。 對於某些數據源,Visual Studio 也會在程式代碼後置檔案中產生程式代碼,以將數據填入數據源。
下表列出 Visual Studio 針對 [ 資料源 ] 視窗中每個數據源類型所產生的 XAML 和程式碼。
| 數據源 | 產生將控件系結至數據源的 XAML | 產生以數據填滿數據源的程序代碼 |
|---|---|---|
| 數據集 | 是的 | 是的 |
| Entity Data Model | 是的 | 是的 |
| 服務 | 是的 | 否 |
| 物體 | 是的 | 否 |
數據集
當您將數據表或數據行從 [數據源 ] 視窗拖曳至設計工具時,Visual Studio 會產生執行下列動作的 XAML:
將數據集和新的 CollectionViewSource 加入至您拖曳專案之容器的資源。 CollectionViewSource是物件,可用來巡覽和顯示數據集中的數據。
建立控件的數據系結。 如果您將專案拖曳至設計工具中的現有控件,XAML 會將控件系結至專案。 如果您將專案拖曳至容器,XAML 會建立針對拖曳項目選取的控件,並將控件系結至專案。 控件會在新的 Grid內建立。
Visual Studio 也會對程式代碼後置檔案進行下列變更:
- Loaded為包含控制項的 UI 元素建立事件處理程式。 事件處理程式會以資料填滿資料表、從容器的資源取得 CollectionViewSource ,然後將第一個資料項變成目前項目。 Loaded如果事件處理程式已經存在,Visual Studio 會將此程式代碼新增至現有的事件處理程式。
實體數據模型
當您將實體或實體屬性從 [數據源 ] 視窗拖曳至設計工具時,Visual Studio 會產生執行下列動作的 XAML:
將新的 CollectionViewSource 加入到您拖曳的項目所在容器的資源。 CollectionViewSource是物件,可用來巡覽及顯示實體中的數據。
建立控件的數據系結。 如果您將專案拖曳至設計工具中的現有控件,XAML 會將控件系結至專案。 如果您將專案拖曳至容器,XAML 會建立針對拖曳項目選取的控件,並將控件系結至專案。 控件會在新的 Grid內建立。
Visual Studio 也會對程式代碼後置檔案進行下列變更:
新增一個方法,該方法會傳回您拖曳至設計工具的實體查詢(或包含您拖曳至設計工具之屬性的實體查詢)。 新方法的名稱為
Get<EntityName>Query,其中\<EntityName>是實體的名稱。Loaded為包含控制項的 UI 元素建立事件處理程式。 事件處理程式會呼叫
Get<EntityName>Query方法,以將數據填入實體,從容器中擷取 CollectionViewSource,然後將第一個數據項設為當前項目。 Loaded如果事件處理程式已經存在,Visual Studio 會將此程式代碼新增至現有的事件處理程式。
服務業
當您將服務物件或屬性從 [數據源 ] 視窗拖曳至設計工具時,Visual Studio 會產生建立數據綁定控件的 XAML(或將現有的控件系結至物件或屬性)。 不過,Visual Studio 不會產生將 Proxy 服務物件填入數據的程序代碼。 您必須自行撰寫此程式碼。 如需示範如何執行的範例,請參閱 將 WPF 控件系結至 WCF 數據服務。
Visual Studio 會產生執行下列動作的 XAML:
在您將項目拖曳至容器時,將新的 CollectionViewSource 加入至該容器的資源中。 CollectionViewSource是物件,可用來巡覽及顯示服務所傳回之 對象中的數據。
建立控件的數據系結。 如果您將專案拖曳至設計工具中的現有控件,XAML 會將控件系結至專案。 如果您將專案拖曳至容器,XAML 會建立針對拖曳項目選取的控件,並將控件系結至專案。 控件會在新的 Grid內建立。
物件
當您將物件或屬性從 [數據源 ] 視窗拖曳至設計工具時,Visual Studio 會產生建立數據綁定控件的 XAML(或將現有的控件系結至物件或屬性)。 不過,Visual Studio 不會產生程式代碼,以將數據填滿物件。 您必須自行撰寫此程式碼。
備註
自定義類別必須是公用的,而且根據預設,具有不含參數的建構函式。 它們不能是其語法中有「點」的巢狀類別。 如需詳細資訊,請參閱 WPF 的 XAML 和自定義類別。
Visual Studio 會產生執行下列動作的 XAML:
將 CollectionViewSource 新增至您拖曳項目的容器資源中。 CollectionViewSource是物件,可用來巡覽及顯示 物件中的數據。
建立控件的數據系結。 如果您將專案拖曳至設計工具中的現有控件,XAML 會將控件系結至專案。 如果您將專案拖曳至容器,XAML 會建立針對拖曳項目選取的控件,並將控件系結至專案。 控件會在新的 Grid內建立。