Silverlight实用窍门系列:64.Silverlight中的DataContext和ItemsSource

简介:

在Silverlight中我们经常看到数据绑定源由DataContext或者ItemsSource指定,那么他们之间的区别有哪些呢?

    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://www.cnblogs.com/chengxingliang/archive/2012/04/23/2464952.html,如需转载请自行联系原作者

相关文章
|
XML Java 数据库
安卓项目:app注册/登录界面设计
本文介绍了如何设计一个Android应用的注册/登录界面,包括布局文件的创建、登录和注册逻辑的实现,以及运行效果的展示。
732 1
安卓项目:app注册/登录界面设计
|
监控 安全 数据挖掘
如何精准监控员工上网:这三款员工上网行为监控告诉你
本文介绍了三款员工上网行为监控软件,以增强企业网络安全性。WorkWin提供USB管理、带宽控制及远程管理,确保资源有效分配和安全。InterGuard专注敏感数据检测、违规行为监控,即时消息审查,保障企业安全。而Hubstaff侧重工时追踪、活动记录和应用使用报告,优化工作效率和团队管理。这些工具旨在平衡安全与效率,助力企业保护资源和提升生产力。
825 3
|
8月前
|
数据采集 Java 数据处理
Python实用技巧:轻松驾驭多线程与多进程,加速任务执行
在Python编程中,多线程和多进程是提升程序效率的关键工具。多线程适用于I/O密集型任务,如文件读写、网络请求;多进程则适合CPU密集型任务,如科学计算、图像处理。本文详细介绍这两种并发编程方式的基本用法及应用场景,并通过实例代码展示如何使用threading、multiprocessing模块及线程池、进程池来优化程序性能。结合实际案例,帮助读者掌握并发编程技巧,提高程序执行速度和资源利用率。
381 0
|
算法 搜索推荐 开发者
ChatGPT Prompt 的神秘巅峰:LangGPT 框架震撼登场,改变一切!
【8月更文挑战第13天】在数字化时代,ChatGPT 以卓越的语言处理能力成为焦点。通过掌握如 LangGPT 的有效思维框架,可显著提升与其交互的质量。关键在于明确问题、精确指令及详述期望输出。例如,撰写推广文案时具体说明产品特点与风格要求;寻求代码帮助时指定算法与语言。这些实践能最大化挖掘 ChatGPT 的潜力,为工作生活带来创新与便利。
225 2
|
SQL 关系型数据库 MySQL
Windows服务器的最佳数据库是什么?
【7月更文挑战第20天】Windows服务器的最佳数据库是什么?
246 5
|
JavaScript
jQuery - 设置内容和属性
jQuery - 设置内容和属性
126 2
GitHub最新发布Java面试突击手册+P5-P8学习图谱,一夜直接竟爆火
什么是金九银十? “金九银十指的是每年的九十月份都是人才招聘的高峰期,因为跟春节和春运紧接,到人才市场,人都是满的,所以称为金九;伴随的十月则称为银十。”
|
存储 小程序 前端开发
【易售小程序项目】小程序私聊页面完善(带尾巴聊天气泡组件封装、滑至顶端获取历史聊天数据逻辑优化)【后端基于若依管理系统开发】
【易售小程序项目】小程序私聊页面完善(带尾巴聊天气泡组件封装、滑至顶端获取历史聊天数据逻辑优化)【后端基于若依管理系统开发】
272 0
|
JavaScript
JS利用函数求任意两个数之间的累加和
JS利用函数求任意两个数之间的累加和
JS利用函数求任意两个数之间的累加和
|
缓存 算法 Java
详解gc(垃圾回收)机制三:GC复制算法
详解gc(垃圾回收)机制三:GC复制算法
706 1
详解gc(垃圾回收)机制三:GC复制算法