將 WPF 控制項繫結至 Visual Studio 中的資料
您可以透過將資料繫結至 WPF 控制項,對應用程式的使用者顯示資料。 若要建立這些資料繫結控制項,您可以從 [資料來源] 視窗將項目拖曳至 Visual Studio 中的 WPF Designer。 本主題描述可用來建立資料繫結 WPF 應用程式的一些最常用工作、工具和類別。
如需如何在 Visual Studio 中建立資料繫結控制項的一般資訊,請參閱將控制項繫結至 Visual Studio 中的資料。如需 WPF 資料繫結的詳細資訊,請參閱資料繫結概觀。
將 WPF 控制項繫結至資料的相關工作
下表列出可透過從 [資料來源] 視窗將項目拖曳至 WPF Designer所完成的工作。
工作 |
詳細資訊 |
---|---|
建立新的資料繫結控制項。 將現有控制項繫結至資料。 |
|
建立可顯示父子關係中相關資料的控制項:當使用者選取某個控制項中的父資料記錄時,另一個控制項會顯示選取之記錄的相關子資料。 |
|
建立「查閱資料表」(Lookup Table),其根據某個資料表中的外部索引鍵欄位值,顯示另一個資料表的資訊。 |
|
將控制項繫結至資料庫中的圖片。 |
有效置放目標
[資料來源] 視窗中的項目只能拖曳至 WPF Designer中的有效置放目標。 有效置放目標有兩種:容器和控制項。 容器是通常會包含控制項的使用者介面項目。 例如,格線是容器,視窗也是容器。
產生的 XAML 和程式碼
當您從 [資料來源] 視窗將項目拖曳至 WPF Designer時,Visual Studio 會產生定義新資料繫結控制項 (或將現有控制項繫結至資料來源) 的 XAML。 對於某些資料來源,Visual Studio 也會在程式碼後置檔案中產生可將資料填入資料來源的程式碼。
下表列出 Visual Studio 針對 [資料來源] 視窗中的每種資料來源類型所產生的 XAML 和程式碼。
資料來源 |
產生可將控制項繫結至資料來源的 XAML |
產生可將資料填入資料來源的程式碼 |
---|---|---|
資料集 |
是 |
是 |
實體資料模型 |
是 |
是 |
服務 |
是 |
否 |
物件 |
是 |
否 |
資料集
當您從 [資料來源] 視窗將資料表或資料行拖曳至設計工具時,Visual Studio 會產生完成下列工作的 XAML:
將資料集或新 CollectionViewSource 加入至拖曳目標容器的資源。 CollectionViewSource 物件可用來巡覽及顯示資料集中的資料。
建立控制項的資料繫結。 如果您將項目拖曳至設計工具中的現有控制項,XAML 會將控制項繫結至項目。 如果您將項目拖曳至容器,XAML 會針對拖曳的項目建立所選取的控制項,並將控制項繫結至項目。 控制項是在新的 Grid 內建立。
Visual Studio 也會對程式碼後置檔案進行下列變更:
- 針對包含控制項的 UI 項目,建立 Loaded 事件處理常式。 事件處理常式會將資料填入資料表,從容器的資源擷取 CollectionViewSource,然後讓第一個資料項目成為目前的項目。 如果 Loaded 事件處理常式已經存在,Visual Studio 便會將此程式碼加入至現有的事件處理常式。
實體資料模型
當您從 [資料來源] 視窗將實體或實體屬性拖曳至設計工具時,Visual Studio 會產生完成下列工作的 XAML:
將新 CollectionViewSource 加入至拖曳目標容器的資源。 CollectionViewSource 物件可用來巡覽及顯示實體中的資料。
建立控制項的資料繫結。 如果您將項目拖曳至設計工具中的現有控制項,XAML 會將控制項繫結至項目。 如果您將項目拖曳至容器,XAML 會針對拖曳的項目建立所選取的控制項,並將控制項繫結至項目。 控制項是在新的 Grid 內建立。
Visual Studio 也會對程式碼後置檔案進行下列變更:
加入新方法,其針對您拖曳至設計工具的實體 (或包含拖曳至設計工具之屬性的實體),傳回查詢。 新方法的名稱為 GetEntityNameQuery,其中 EntityName 為實體名稱。
針對包含控制項的 UI 項目,建立 Loaded 事件處理常式。 事件處理常式會呼叫 GetEntityNameQuery 方法將資料填入實體,從容器的資源擷取 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 內建立。
請參閱
工作
HOW TO:將 WPF 控制項繫結至 Visual Studio 中的資料