在本文中将以ListBox为例讲述在Silverlight中Binding数据集合.

  在这里我们将实体集的绑定分为三类:

     一、直接控件绑定。

     二、DataTemplate模板绑定。

     三、详细信息绑定。

  首先:我们来看第一类直接控件绑定是对控件的ItemsSource属性进行绑定,然后使用SelectedValuePath指定选择值,DisplayMemberPath指定显示值的方式。Xaml代码如下:

  1. <!--第一种:直接绑定一个Collection实体集合-->
  2. <ListBox Height="239" HorizontalAlignment="Left" Margin="112,25,0,0"
  3. Name="lbCollection" VerticalAlignment="Top" Width="198"
  4. ItemsSource="{Binding}" SelectedValuePath="Author" DisplayMemberPath="Name" />

  其次:DataTemplate是对象制作一个数据模板,所以的数据实体都安装这个数据模板来呈现,现在我们看看其Xaml代码如下:

  1. <!--第二种:使用DataTemplate绑定一个Collection实体集合-->
  2. <ListBox Height="239" HorizontalAlignment="Left" Margin="478,25,0,0"
  3. Name="lbTemplate" ItemsSource="{Binding}" VerticalAlignment="Top" Width="198" >
  4. <ListBox.ItemTemplate>
  5. <DataTemplate>
  6. <StackPanel Orientation="Horizontal" Margin="3">
  7. <sdk:Label  Content="DocName:"></sdk:Label>
  8. <TextBlock Text="{Binding Name}"></TextBlock>
  9. <sdk:Label  Content="  Author:"></sdk:Label>
  10. <TextBlock Text="{Binding Author}"></TextBlock>
  11. </StackPanel>
  12. </DataTemplate>
  13. </ListBox.ItemTemplate>
  14. </ListBox>

  最后:详细信息绑定是当用户点击列表中某一个实体标题属性的时候,自动显示其实体的详细信息给用户观看,注意在这里列表的数据源以及详细信息显示页的数据源都必须是CollectionViewSource类型的,其Xaml代码如下:

  1. <!--第三种:使用绑定一个Detail详细信息-->
  2. <StackPanel HorizontalAlignment="Left"  Orientation="Horizontal" VerticalAlignment="top"
  3. Width="500" Height="240" Margin="112,294,188,66">
  4. <ListBox Height="239" HorizontalAlignment="Left" Name="lbDetail"
  5. VerticalAlignment="Top" Width="198" ItemsSource="{Binding}"
  6. SelectedValuePath="Author" DisplayMemberPath="Name" />
  7. <StackPanel x:Name="spDetail"  Width="300" Height="200">
  8. <TextBlock FontWeight="Bold" Text="{Binding Name}" />
  9. <TextBlock FontStyle="Italic" Text="{Binding Author}"/>
  10. <TextBlock Text="{Binding Content}" />
  11. <TextBlock Text="{Binding WriteDate}" />
  12. </StackPanel>
  13. </StackPanel>

  本实例的后台代码如下,注意第三种详细信息的绑定方式:

  1. public partial class MainPage : UserControl
  2. {
  3. public MainPage()
  4. {
  5. InitializeComponent();
  6. //获取实体集合
  7. ObservableCollection<Info> list = Info.GetList();
  8. //第一种数据源赋值
  9. this.lbCollection.DataContext = list;
  10. //第二种数据源赋值
  11. this.lbTemplate.DataContext = list;
  12. //第三种数据源赋值
  13. CollectionViewSource collection = new CollectionViewSource { Source = list };
  14. this.lbDetail.DataContext = collection;
  15. this.spDetail.DataContext = collection;
  16. }
  17. }

  本实例定义一个实体以及实体集合如下:

  1. public class Info
  2. {
  3. public string Name { get; set; }
  4. public string Author { get; set; }
  5. public string Content { get; set; }
  6. public string WriteDate { get; set; }
  7. public static ObservableCollection<Info> GetList()
  8. {
  9. ObservableCollection<Info> list = new ObservableCollection<Info>();
  10. list.Add(new Info() { Name = "文章一", Author = "作者一", Content = "内容一", WriteDate = "2009-02-03" });
  11. list.Add(new Info() { Name = "文章二", Author = "作者二", Content = "内容二", WriteDate = "2009-03-03" });
  12. list.Add(new Info() { Name = "文章三", Author = "作者三", Content = "内容三", WriteDate = "2009-04-03" });
  13. list.Add(new Info() { Name = "文章四", Author = "作者四", Content = "内容四", WriteDate = "2009-05-03" });
  14. list.Add(new Info() { Name = "文章五", Author = "作者五", Content = "内容五", WriteDate = "2009-06-03" });
  15. list.Add(new Info() { Name = "文章六", Author = "作者六", Content = "内容六", WriteDate = "2009-07-03" });
  16. return list;
  17. }
  18. }

  本实例采用Vs2010+Silverlight 4编写,如需源码请点击 SLBinding3.rar 下载。

本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/827109

Silverlight实用窍门系列:58.Silverlight中的Binding使用(三)-数据集合绑定相关推荐

  1. Silverlight实用窍门系列:59.多个中心点联动多线的可拖动控件扩展为拓扑图

    在本系列的第17篇文章中"Silverlight实用窍门系列:17.中心点联动多线的可拖动控件(绘制工程图.拓扑图基础) ",制作了基本的中心联动图标.有园友对此图的扩展不是很清晰 ...

  2. Silverlight实用窍门系列:71.Silverlight的Style

    此文章实例基于Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary,如有数据源疑问请参考该文章. 在Silverlight中的Style相当于 ...

  3. Silverlight实用窍门系列:47.Silverlight中元素到元素的绑定,以及ObservableCollection和List的使用区别...

    问题一:在某一些情况下,我们使用MVVM模式的时候,对于某一个字段(AgeField)需要在前台的很多个控件(A.B.C.D.E)进行绑定,但是如何能够让我们后台字段名改变的时候能够非常方便的改变所有 ...

  4. Silverlight实用窍门系列:40.Silverlight中捕捉视频,截图保存到本地

    在Silverlight中我们可以捕捉视频设备以制作视频会议系统,或者通过视频设备截图功能上传头像等功能. 下面我们通过一个简单的实例来访问视频设备,并且截取图像下载该截图文件至本地. 一.在Silv ...

  5. Silverlight实用窍门系列:61.Silverlight中的Trigger触发器,自定义翻页触发器

    在Silverlight应用程序和客户进行交互工作的时候可以不用写后台代码而通过Xaml代码来实现,在本文我们将学习了解Trigger触发器. Trigger触发器:引发动作的因素,比如鼠标点击.键盘 ...

  6. Silverlight实用窍门系列:54.详解Silverlight中的矩阵变换MatrixTransform,实现其余各种变换【附带实例源码】...

    在Silverlight中的MatrixTransform矩阵变换相对上篇文章所述的变换较复杂一些,但这种变换也更灵活. MatrixTransform的实质:让需要变换的元素上的每一个像素点*矩阵得 ...

  7. Silverlight实用窍门系列:40.Silverlight中捕捉视频,截图保存到本地【附带实例源码】...

    在Silverlight中我们可以捕捉视频设备以制作视频会议系统,或者通过视频设备截图功能上传头像等功能. 下面我们通过一个简单的实例来访问视频设备,并且截取图像下载该截图文件至本地. 一.在Silv ...

  8. Silverlight实用窍门系列:56.Silverlight中的Binding使用(一)【附带实例源码】

    本文将详细讲述Silverlight中Binding,包括Binding的属性和用法,Binding的数据流向. Binding:一个完整的Binding过程是让源对象中的某个属性值通过一定流向规则进 ...

  9. Silverlight实用窍门系列:63.Silverlight中的Command,自定义简单Command

    在Silverlight中的MVVM模式下将前台页面和ViewModel界面交互分离开是通过本节所要讲述的Command实现的.我们自定义一个Command需要继承于ICommand接口并且实现这个接 ...

最新文章

  1. oracle数据库集群日志,Oracle集群数据库中恢复归档日志
  2. java contains性能_java – 使用whereArrayContains进行搜索的效率
  3. 单片机第13课:串口通信---向计算机发送数据
  4. 【已解决】onenote无法正常打印怎么办?
  5. C# static变量、const变量、readonly变量
  6. git配置取消代理_「高手」如何优雅的解决 git 超时
  7. vim编辑时遇到E325: ATTENTION Found a swap file by the name ./.backu.sh.swp错误代码的解决办法
  8. css3中的box-sizing的用法
  9. 【算法练习】POJ - 3683 Priest John's Busiest Day (2-SAT)
  10. 2021年高考成绩查询无为二中,清北保送生公示:安徽仅3人,2021年安徽985录取率还会垫底吗?...
  11. RK3288获取摄像头的Sensor ID【原创】
  12. iPhone 定位记录「重要地点」有多危险?用这招秒查另一半行踪
  13. NoSuchBeanDefinitionException: No bean named 'tDubboServiceImpl' is defined 的解决办法
  14. oracle面试题答案,Oracle面试题笔试题及参考答案
  15. Vatti clipping 算法介绍
  16. 打印两个字符串的公共字符
  17. 数据增强算法SMOTE的实验结果分析
  18. 【创意编程】《无限》:宇宙、三体、星云和轨迹
  19. Label组件之图片显示问题
  20. 干扰采样 破坏计算机系统信息罪,篡改污染物后台参数,构成破坏计算机信息系统罪污染环境罪吗?...

热门文章

  1. checkmarx : Input path not canocalized 问题解决方法
  2. NVIDIA官方中文版GPU编程指南v2.20(转载自GZeasy)
  3. OSChina 周日乱弹 ——冯小牛 我要治愈你!
  4. 预热机程序,三菱Q系列PLC,内涵电气图纸、伺服程序,GOT触摸屏程序等
  5. BQ25703 评估板测试
  6. Ubuntu ssh连接access deny
  7. Java字符串数组字典序排序
  8. 易语言超级列表框 网络图片_网络被中断,稳赢被翻盘?网友:试试OPPO Reno3 Pro网络无缝切换...
  9. 湖南中医药大学OJ—1170到1179
  10. 2022起重机司机(限门式起重机)操作证考试题库及答案