Silverlight实用窍门系列:64.Silverlight中的DataContext和ItemsSource 推荐
2012-04-23 12:31
519 查看
在Silverlight中我们经常看到数据绑定源由DataContext或者ItemsSource指定,那么他们之间的区别有哪些呢?
DataContext:从英文字母意思是数据上下文,在Silverlight中某个父级元素设置了DataContext,那么其子元素将可以继承并且使用DataContext中的属性。DataContext绑定的数据源可以是实体集合、实体、属性等。
ItemsSource:其数据源通常是实体集合(一列数据),无法让其子元素继承使用。
下面我们以一个实例主要讲解DataContext的用法,其中在父级元素Grid设置了一个DataContext属性绑定实体,该实体内部有一个属性为实体集合,此实体集合用于Grid的子元素ListBox的ItemsSource属性绑定。代码如下:
首先我们看两个实体,其中一个实体属性为List<>:
其次我们来看Xaml代码绑定如下:
最后我们看看另外一种后台绑定DataContext的方式。
如需源码请点击 SLDataContext.zip 下载 ,效果图如下:
DataContext:从英文字母意思是数据上下文,在Silverlight中某个父级元素设置了DataContext,那么其子元素将可以继承并且使用DataContext中的属性。DataContext绑定的数据源可以是实体集合、实体、属性等。
ItemsSource:其数据源通常是实体集合(一列数据),无法让其子元素继承使用。
下面我们以一个实例主要讲解DataContext的用法,其中在父级元素Grid设置了一个DataContext属性绑定实体,该实体内部有一个属性为实体集合,此实体集合用于Grid的子元素ListBox的ItemsSource属性绑定。代码如下:
首先我们看两个实体,其中一个实体属性为List<>:
public class ClaModel { public ClaModel() { ClaName = "五年级三班"; ClaInfo = "全校最好的班级,获得多项荣誉"; StuList = new List<StuModel>() { new StuModel(){StuName="刘三", StuAge=15, StuInfo="他很勤奋"}, new StuModel(){StuName="李四", StuAge=14, StuInfo="他很懒惰"}, new StuModel(){StuName="王五", StuAge=16, StuInfo="他很聪明"} }; } public string ClaName { get; set; } public string ClaInfo { get; set; } public List<StuModel> StuList { get; set; } } public class StuModel { public string StuName { get; set; } public int StuAge { get; set; } public string StuInfo { get; set; } }
其次我们来看Xaml代码绑定如下:
<UserControl x:Class="SLDataContext.MainPage" 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" xmlns:local="clr-namespace:SLDataContext" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <!--第一种方式--> <UserControl.Resources> <local:ClaModel x:Key="ClaSource" /> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="White" DataContext="{StaticResource ClaSource}"> <TextBlock FontWeight="Bold" Width="60" Height="30" Text="{Binding ClaName}" VerticalAlignment="Top" HorizontalAlignment="Left" /> <TextBlock FontStyle="Italic" Width="160" Height="30" Text="{Binding ClaInfo}" VerticalAlignment="Top" Margin="70 0 0 0" HorizontalAlignment="Left" /> <ListBox Height="239" HorizontalAlignment="Left" Name="lbDetail" VerticalAlignment="Top" Width="343" ItemsSource="{Binding StuList}" SelectedValuePath="StuAge" DisplayMemberPath="StuName" Margin="27,61,0,0" /> </Grid> </UserControl>
最后我们看看另外一种后台绑定DataContext的方式。
public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); //第二种方式:也可以用后台代码绑定DataContext //this.LayoutRoot.DataContext = new ClaModel(); } }
如需源码请点击 SLDataContext.zip 下载 ,效果图如下:
![](http://pic002.cnblogs.com/images/2012/140041/2012042214302730.jpg)
相关文章推荐
- Silverlight实用窍门系列:64.Silverlight中的DataContext和ItemsSource
- Silverlight实用窍门系列:74.Silverlight使用Perst数据库Demo 推荐
- Silverlight实用窍门系列:70.Silverlight的视觉状态组VisualStateGroup 推荐
- Silverlight实用窍门系列:47.Silverlight中元素到元素的绑定,以及ObservableCollection和List的使用区别 推荐
- Silverlight实用窍门系列:69.Silverlight的ScrollViewer 推荐
- Silverlight实用窍门系列:72.Silverlight的Implicit Style、自定义主题皮肤、系统主题皮肤 推荐
- Silverlight实用窍门系列:62.Silverlight中的Action动作TargetedTriggerAction、TriggerAction 推荐
- Silverlight实用窍门系列:73.Silverlight的DataGrid分组以及模拟合并单元格 推荐
- Silverlight实用窍门系列:63.Silverlight中的Command,自定义简单Command 推荐
- Silverlight实用窍门系列:75.Silverlight中DataGrid制作复杂表头 推荐
- Silverlight实用窍门系列:8. Accordion模拟菜单,Accordion动态绑定数据,模拟菜单点击【附带源码实例】
- Silverlight实用窍门系列:14.Visifire图表控件的使用一(图表的创建和基础使用)
- Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))【附带实例源码】
- Silverlight中的DataContext和ItemsSource 数据绑定
- Silverlight实用窍门系列:57.Silverlight中的Binding使用(二)-数据验证
- Silverlight实用窍门系列:46.深入了解Silverlight的IValueConverter和TypeConverter
- Silverlight实用窍门系列:3.Silverlight鼠标动态绘制矩形【实例源码下载】
- Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】
- Silverlight实用窍门系列:52.Silverlight中的MVVM框架极速入门(以MVVM Light Toolkit为例)
- Silverlight实用窍门系列:66.Silverlight的数据模板DataTemplate(二)获取数据模板控件