浅析Silvelight中显示多重数据模型集合

开发 后端
这里将介绍Silvelight中显示多重数据模型集合,主要是通过DataForm组件的ItemsSource属性支持这种做法,希望本文能对大家有所帮助。
Silvelight中显示多重数据模型集合,在本例中可以对不同的数据模型集合数据信息的更新、删除。***的效果图也分为两种不同的情况。

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

实例说明

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

实例引申

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

实例代码

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

DataModel.cs数据模型代码:

  1. using System;  
  2. namespace SilverlightClient  
  3. {  
  4.     public class Employee  
  5.     {  
  6.        public int EmployeeID { get; set; }  
  7.         public string EmployeeName { get; set; }  
  8.         public int EmployeeAge { get; set; }  
  9.     }  
  10.     public class Delivery  
  11.     {  
  12.         public int DeliveryID { get; set; }  
  13.         public string DeliveryFrom { get; set; }  
  14.         public string DeliveryTo { get; set; }  
  15.     }  

MainPage.xaml文件代码:

  1. <UserControl 
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   
  3.    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"   
  5.     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" 
  6.     d:DesignWidth="320" d:DesignHeight="380"> 
  7.     <Grid x:Name="LayoutRoot" Width="320" Height="380" Background="White"> 
  8.         <dataFormToolkit:DataForm x:Name="dfDataModel" Margin="8,8,8,179"/> 
  9.         <!--用作对比的DataGrid组件--> 
  10.         <data:DataGrid x:Name="dgDataModel" Margin="8,252,8,8" Width="304" Height="120"/> 
  11.     </Grid> 
  12. </UserControl> 
  13. MainPage.xaml.cs文件代码:  
  14. using System;  
  15. using System.Collections.Generic;  
  16. using System.Collections.ObjectModel;  
  17. using System.Linq;  
  18. using System.Net;  
  19. using System.Windows;  
  20. using System.Windows.Controls;  
  21. using System.Windows.Documents;  
  22. using System.Windows.Input;  
  23. using System.Windows.Media;  
  24. using System.Windows.Media.Animation;  
  25. using System.Windows.Shapes;  
  26. namespace SilverlightClient  
  27. {  
  28.     public partial class MainPage : UserControl  
  29.     {  
  30.         public MainPage()  
  31.        {  
  32.             InitializeComponent();  
  33.             this.Loaded += new RoutedEventHandler(MainPage_Loaded);  
  34.         }  
  35.        void MainPage_Loaded(object sender, RoutedEventArgs e)  
  36.         {  
  37.             dfDataModel.ItemsSource = GetHeterogeneousData();//提供数据源  
  38.             dgDataModel.ItemsSource = GetHeterogeneousData();//用作对比  
  39.         }  
  40.         private List<Employee> GetEmployees()//生成雇员信息  
  41.         {  
  42.             List<Employee> returnedValue = new List<Employee>();  
  43.             returnedValue.Add(new Employee() { EmployeeID = 1EmployeeName = "张三"EmployeeAge = 23 });  
  44.             returnedValue.Add(new Employee() { EmployeeID = 2EmployeeName = "李四"EmployeeAge = 24 });  
  45.             returnedValue.Add(new Employee() { EmployeeID = 3EmployeeName = "王五"EmployeeAge = 25 });  
  46.             return returnedValue;  
  47.         }  
  48.         private List<Delivery> GetDelivery()//生成递送信息  
  49.        {  
  50.             List<Delivery> returnedValue = new List<Delivery>();  
  51.             returnedValue.Add(new Delivery() { DeliveryID = 1DeliveryFrom = "南京"DeliveryTo = "宁波" });  
  52.             returnedValue.Add(new Delivery() { DeliveryID = 2DeliveryFrom = "镇江"DeliveryTo = "苏州" });  
  53.             return returnedValue;  
  54.         }  
  55.         private ObservableCollection<object> GetHeterogeneousData()//为DataForm提供多重数据模型集合的数据源  
  56.         {  
  57.             ObservableCollection<object> returnedValue = new ObservableCollection<object>();  
  58.             GetEmployees().ForEach( x => returnedValue.Add(x));//向集合数据源中添加Employee数据信息  
  59.             GetDelivery().ForEach(x => returnedValue.Add(x));//向集合数据源中添加Delivery数据信息  
  60.             return returnedValue;  
  61.        }  
  62.     }  

最终效果图

最终效果图1
最终效果图2

原文标题:有关DataForm组件的研究_显示多重数据模型集合——Silverlight学习笔记[24]

链接:http://www.cnblogs.com/Kinglee/archive/2009/09/09/1563547.html

【编辑推荐】

  1. Office 2010将使用Silverlight改善用户体验
  2. 微软.NET平台主管谈Silverlight企业级开发
  3. Flash与Silverlight多领域实测对比
  4. 微软宣称Silverlight装机量超过三亿
  5. 图解Silverlight 3的7个新功能
责任编辑:彭凡 来源: 博客园
相关推荐

2022-08-15 14:49:12

物联网数据模型存储

2021-02-28 22:20:25

2010-05-26 14:37:56

Cassandra数据

2012-03-05 10:54:03

NoSQL

2009-09-18 14:07:51

LINQ to SQL

2021-01-27 05:34:33

Python对象模型

2017-06-27 10:08:29

数据仓库模型

2016-11-02 12:32:47

数据分析大数据模型

2010-08-11 09:29:25

FlexJava数据模型

2021-07-14 10:09:05

架构模型数据

2022-12-09 09:39:01

数据治理

2020-10-14 06:28:38

数据仓库模型

2016-01-07 11:25:12

数据模型训练数据

2009-11-12 16:39:02

ADO.NET实体数据

2009-07-20 14:14:03

PowerDesign

2023-02-26 17:46:03

2024-11-15 11:43:21

2021-01-15 13:18:39

数据模型领域模型代码

2024-07-15 09:13:48

2021-04-16 15:03:56

数字化转型IT技术
点赞
收藏

51CTO技术栈公众号