在WPF中系统提供了两个数据源提供器(DataProvider):对象数据源提供器 (ObjectDataProvider)和XML数据源提供器(XmlDataProvider)。其作用类似 于ASP.Net数据源(DataSource)中的对象数据源(ObjectDataSource)和Xml数 据源(XmlDataSource)。其继承结构如下:
ObjectDataProvider用于处理由方法返回值所产生的数据源,其应用 非常广泛,通常多层应用程序通常在界面上使用ObjectDataProvider处理由组件 层所产生的数据。在本节中我们主要处理ObjectDataProvider,对于 XmlDataProvider感兴趣的朋友可以参考MSDN。
一、组件端定义
例如:定义一个类库项目,在其中定义一个ProductInfo类、CategoryInfo类, 用来封装Northwind数据库中的Products表及Categories表中的数据。定义 NorthwindDataSet,包含Product、Category两个DataTable。定义DataControl 类,处理对Northwind数据库的操作,返回相应的封装后的类型或集合作为界面 显示的数据源。
1、ProductInfo类和CategoryInfo类
1: namespace WPF_24_Library
2: {
3: /// <summary>
4: /// 封装产品表的信息
5: /// </summary>
6: public class ProductInfo
7: {
8: public int ProductID
9: {
10: set; get;
11: }
12: public string ProductName
13: {
14: set; get;
15: }
16: public decimal UnitPrice
17: {
18: set; get;
19: }
20: public int CategoryID
21: {
22: set; get;
23: }
24: }
25: }
1: using System.Collections.Generic;
2:
3: namespace WPF_24_Library
4: {
5: /// <summary>
6: /// 封装类别表的信息
7: /// </summary>
8: public class CategoryInfo
9: {
10: public CategoryInfo()
11: {
12: Products = new List<ProductInfo>();
13: }
14:
15: public int CategoryID
16: {
17: set; get;
18: }
19: public string CategoryName
20: {
21: set; get;
22: }
23:
24: /// <summary>
25: /// 封装该类别的所有产品
26: /// </summary>
27: public List<ProductInfo> Products
28: {
29: private set; get;
30: }
31: }
32: }