共用方式為


將 WPF 控制項繫結至 .NET Framework 應用程式中的資料

注意

資料集和相關類別是 2000 年代初的舊版 .NET Framework 技術,可讓應用程式在應用程式與資料庫中斷連線時使用記憶體中的資料。 這些技術特別適用於可讓使用者修改資料並將變更保存回資料庫的應用程式。 雖然已證明資料集是非常成功的技術,但建議新的 .NET 應用程式使用 Entity Framework Core。 Entity Framework 提供更自然的方式,將表格式資料作為物件模型使用,而且具有更簡單的程式設計介面。

您可以透過將資料繫結至 WPF 控制項,對應用程式的使用者顯示資料。 若要建立這些資料繫結控制項,您可以將項目從 [資料來源] 視窗拖曳至 Visual Studio 中的 WPF 設計工具。 本主題描述可用來建立資料繫結 WPF 應用程式的一些最常用工作、工具和類別。

如需如何在 Visual Studio 中建立資料繫結控制項的一般資訊,請參閱將控制項繫結至 Visual Studio 中的資料。 如需 WPF 資料繫結的詳細資訊,請參閱資料繫結概觀

將 WPF 控制項繫結至資料的工作

下表列出可透過從 [資料來源] 視窗將項目拖曳至 WPF 設計工具所完成的工作。

Task 其他相關資訊
建立新的資料繫結控制項。

將現有控制項繫結至資料。
將 WPF 控制項繫結至資料集
建立可顯示父子關係中相關資料的控制項:當使用者選取某個控制項中的父資料記錄時,另一個控制項會顯示選取之記錄的相關子資料。 在 WPF 應用程式中顯示相關資料
建立「查閱資料表」,其根據某個資料表中的外部索引鍵欄位值,顯示另一個資料表的資訊。 在 WPF 應用程式中建立查閱資料表
將控制項繫結至資料庫中的圖片。 從資料庫將控制項繫結至圖片

有效置放目標

[資料來源] 視窗中的項目,只能拖曳至 WPF 設計工具中的有效置放目標。 有效置放目標有兩種:容器和控制項。 容器是通常會包含控制項的使用者介面項目。 例如,格線是容器,視窗也是容器。

產生的 XAML 和程式碼

當您從 [資料來源] 視窗將項目拖曳至 WPF 設計工具時,Visual Studio 會產生定義新資料繫結控制項 (或將現有控制項繫結至資料來源) 的 XAML。 對於某些資料來源,Visual Studio 也會在程式碼後置檔案中產生可將資料填入資料來源的程式碼。

下表列出 Visual Studio 針對 [資料來源] 視窗中的每種資料來源類型所產生的 XAML 和程式碼。

資料來源 產生可將控制項繫結至資料來源的 XAML 產生可將資料填入資料來源的程式碼
資料集 Yes Yes
實體資料模型 Yes Yes
服務 No
Object No

資料集

當您從 [資料來源] 視窗將資料表或資料行拖曳至設計工具時,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 內建立。

另請參閱