在使用DataForm进行单个数据的浏览时,有时候为了节省空间,我们可能需要在一个DataForm的数据源中放置由不同的数据模型集合所组成的数据集合。幸运的是,Silverlight的DataForm组件的ItemsSource属性支持这种做法。下面我就为大家介绍如何操作。

实例说明

在这个例子中,我建立了名为Employee和Delivery的数据模型。为了对比,我使用了一个DataGrid组件,使它与DataForm使用相同的数据源。大家可以看看结果究竟有何不同。(见最终效果图)

实例引申

该实例可以用作不同的数据模型集合数据信息的更新、删除(可惜难以进行添加操作)。在为多重数据模型集合数据源进行各个数据模型的信息的添加时,记录数据范围。然后在进行更新或删除时,根据这个范围将多重数据模型集合数据源中object对象转换成对应的数据模型后,再进行处理即可。

实例代码

详细的说明将在代码中给出。

DataModel.cs数据模型代码:

using System;

namespace SilverlightClient

{

public class Employee

{

public int EmployeeID { get; set; }

public string EmployeeName { get; set; }

public int EmployeeAge { get; set; }

}

public class Delivery

{

public int DeliveryID { get; set; }

public string DeliveryFrom { get; set; }

public string DeliveryTo { get; set; }

}

}

MainPage.xaml文件代码

<UserControl

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

mc:Ignorable="d" xmlns:dataFormToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="SilverlightClient.MainPage"

d:DesignWidth="320" d:DesignHeight="380">

<Grid x:Name="LayoutRoot" Width="320" Height="380" Background="White">

<dataFormToolkit:DataForm x:Name="dfDataModel" Margin="8,8,8,179"/>

<!--用作对比的DataGrid组件-->

<data:DataGrid x:Name="dgDataModel" Margin="8,252,8,8" Width="304" Height="120"/>

</Grid>

</UserControl>

MainPage.xaml.cs文件代码

using System;

using System.Collections.Generic;

using System.Collections.ObjectModel;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

namespace SilverlightClient

{

public partial class MainPage : UserControl

{

public MainPage()

{

InitializeComponent();

this.Loaded += new RoutedEventHandler(MainPage_Loaded);

}

void MainPage_Loaded(object sender, RoutedEventArgs e)

{

dfDataModel.ItemsSource = GetHeterogeneousData();//提供数据源

dgDataModel.ItemsSource = GetHeterogeneousData();//用作对比

}

private List<Employee> GetEmployees()//生成雇员信息

{

List<Employee> returnedValue = new List<Employee>();

returnedValue.Add(new Employee() { EmployeeID = 1, EmployeeName = "张三", EmployeeAge = 23 });

returnedValue.Add(new Employee() { EmployeeID = 2, EmployeeName = "李四", EmployeeAge = 24 });

returnedValue.Add(new Employee() { EmployeeID = 3, EmployeeName = "王五", EmployeeAge = 25 });

return returnedValue;

}

private List<Delivery> GetDelivery()//生成递送信息

{

List<Delivery> returnedValue = new List<Delivery>();

returnedValue.Add(new Delivery() { DeliveryID = 1, DeliveryFrom = "南京", DeliveryTo = "宁波" });

returnedValue.Add(new Delivery() { DeliveryID = 2, DeliveryFrom = "镇江", DeliveryTo = "苏州" });

return returnedValue;

}

private ObservableCollection<object> GetHeterogeneousData()//为DataForm提供多重数据模型集合的数据源

{

ObservableCollection<object> returnedValue = new ObservableCollection<object>();

GetEmployees().ForEach( x => returnedValue.Add(x));//向集合数据源中添加Employee数据信息

GetDelivery().ForEach(x => returnedValue.Add(x));//向集合数据源中添加Delivery数据信息

return returnedValue;

}

}

}

最终效果图


作者:Kinglee
文章出处:Kinglee’s Blog (http://www.cnblogs.com/Kinglee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。

转载于:https://www.cnblogs.com/Kinglee/archive/2009/09/09/1563547.html

有关DataForm组件的研究_显示多重数据模型集合——Silverlight学习笔记[24]相关推荐

  1. 强大的DataGrid组件[4]_实现CURD[上]——Silverlight学习笔记[12]

    在本教程中,主要为大家讲述如何使用DataGrid来对后台数据库进行CURD操作.由于CURD操作是与数据库交互中最为常用的,因此掌握其使用方法就显得尤为必要.本教程将使用Linq to SQL Cl ...

  2. juyter显示决策树图形_关于决策树可视化的treePlotter(学习笔记)

    网上的版本好像好久都没更新了treePlotter是没有人用了么.今天学习的时候发现有些地方已经改了,我改的是在python 3.6 上的运行版本,需要导入matplotlib.pyplot impo ...

  3. python 网页爬虫作业调度_第3次作业-MOOC学习笔记:Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业. 4.提供图片或网站显示的学习 ...

  4. python第三周笔记_第三周 day3 python学习笔记

    1.字符串str类型,不支持修改. 2.关于集合的学习: (1)将列表转成集合set:集合(set)是无序的,集合中不会出现重复元素--互不相同 (2)集合的操作:交集,并集.差集.对称差集.父集.子 ...

  5. python 学堂在线_(3.7学堂在线python学习笔记)

    @[TOC](3.7学堂在线python学习笔记) # 重要笔记 1. 启发式算法 启发式算法(heuristic algorithm)是相对于最优化算法提出的.一个问题的最优算法求得该问题每个实例的 ...

  6. 有关AutoCompleteBox组件的研究[5][Final]_集成搜索引擎搜索建议(Search Suggestion)——Silverlight学习笔记[40]...

    在AutoCompleteBox组件中集成搜索引擎的功能是十分常见的,这有助于我们更好地与Web进行交互.本文将为大家讲述如何在在AutoCompleteBox组件中集成搜索引擎的搜索建议. 实例: ...

  7. 有关Expander组件的研究——Silverlight学习笔记[33]

    Expander组件常用做边栏目录的分类,比如Windows中"我的文档"的侧边栏.本文将为大家介绍该组件的基本特性以及实际应用. 组件所在命名空间: System.Windows ...

  8. 有关Rating组件的研究——Silverlight学习笔记[41]

    我们经常能在网上发现为新闻.博客文章.图片或是电影视频的评分功能.在Silverlight中,使用Rating组件便能助我们完成以上的功能.本文将为大家介绍该组件的基础知识以及自定义应用方面等方面的内 ...

  9. 有关Accordion组件的研究——Silverlight学习笔记[27]

    Accordion组件在开发中常用于信息的分类显示.本文将为大家介绍该组件的特性以及通过一个实例讲述该组件的基本运用. 组件所在命名控件: System.Windows.Controls 组件常用方法 ...

  10. 有关DataVisualization类组件的研究——Silverlight学习笔记[43]

    Data Visualization类组件以直观的图表方式显示数据的分布,能够让我们更好地分析各数据的内在联系.本文主要向大家介绍该类组件的基本特性以及使用实例. 一.基本特性介绍 1.chart组件 ...

最新文章

  1. 三维重建【一】——————(深度学习方式)
  2. 只服这篇“神文”:基于老子哲学、相对论的超级人工智能模型
  3. SAP HUM嵌套HU研习之HU03显示内层HU数据
  4. Nginx配置文档具体解释
  5. 浅析Web2.0技术
  6. angularjs directive 实例 详解
  7. 持续集成之Jenkins安装部署
  8. 实战 RocketMQ 流量削峰,怎么能错过这一篇!
  9. 酒吧、ktv、夜店收银系统分析
  10. 微信小程序 — 生成二维码功能
  11. ppt背景图片php,ppt模板ppt背景图片 淡雅风格打包下载 (ppt如何打包)
  12. vue中清除路由缓存
  13. PS标尺和标记线用法的简单记录
  14. 【JavaScript】数组方法应用自测例题
  15. IDV软件相关中英文对照
  16. Java 开发环境配置教程
  17. YOLO算法(一)——Yolo介绍 Yolov1
  18. diamond 学习
  19. QVector常见使用方法
  20. [21S01][1136] Column count doesn‘t match value count at row 1 报错分析

热门文章

  1. Java开发笔记(一百三十二)Swing的表格
  2. Vue生命周期钩子函数
  3. 2018.10.24-day3 python总结
  4. 用AngularJS开发下一代Web应用pdf
  5. 【BZOJ4200】[Noi2015]小园丁与老司机 DP+最小流
  6. asp.net 在repeater控件中加按钮
  7. 一步一步学习hadoop(九)
  8. (转载) MTK之NVRAM研究[三]
  9. asp.net的条形码
  10. 视频点播-上传视频状态异常