Silverlight 2 数据绑定演示程序(附源代码下载)
数据绑定(Data Binding)是用户界面UI和业务对象或其它数据提供者(data provider)的连接。用户界面对象称为目标,数据提供者成为数据源。
数据绑定帮主隔离应用程序的用户界面层和其他层,如业务对象、数据等等。通过绑定对象,实现用户界面层和底层的隔离,其中有2种模式:one-way和two-way。one-way 绑定仅仅显示数据源的数据,two-way 绑定则在更新用户界面的数据时,会同步更新数据源。
下面创建一个Silverlight 2 应用程序,绑定到业务对象,其中Book.cs 文件表示业务层(Business Layer)。如果你希望业务对象改变时,自动更新UI,业务对象必须实现INotifyPropertyChanged 接口。这个接口需要类有一个类型为PropertyChangedEventHandler事件。当绑定到UI控件上的任何属性Property 被赋值或清除时,必须触发PropertyChanged事件。
下面看看Book.cs 文件的部分代码:
public class Book : INotifyPropertyChanged
Book类实现INotifyPropertyChanged 接口。
下面的代码是对Title属性的定义。在set中,会触发PropertyChanged事件。
        // implement the required event for the interface
        public event PropertyChangedEventHandler PropertyChanged;
        public string Title
        {
            get { return bookTitle; }
            set
            {
                bookTitle = value;
                NotifyPropertyChanged("Title");
            }
        }    
        // factoring out the call to the event
        public void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
在xaml页面文件中,每一个绑定的字段均使用Binding语法,关键字Binding跟随一个公有属性(public property),且属性绑定到控件,同时设置Mode,默认为OneWay。示例代码如下:
        <TextBlock x:Name="AuthorURL"
            Text="{Binding AuthorURL, Mode=OneWay }"
            VerticalAlignment="Bottom"
            HorizontalAlignment="Left"
            Grid.Row="5" Grid.Column="1"
            Style="{StaticResource TextBlockStyle}"/>
DataContext
上面的实例代码表示AuthorURL控件绑定到AuthorURL属性,但是没有告诉它绑定到哪一个对象。DataContext 对象是一个特定的book实例,在运行时指定,并赋值给Grid的DataContext属性,这样,数据绑定控件就知道从book实例中获取AuthorURL属性值了。
DataContext对象可以沿着UI树继承,这样,当我们设置Grid对象的DataContext属性后,所有在Grid内的其他控件将可以访问DataContext(除非这些控件有自己的DataContext定义)。看看示例代码:
        void Page_Loaded(object sender, RoutedEventArgs e)
        {
            Book book = new Book();
            InitializeProgramming(book);
            LayoutRoot.DataContext = book;
        }
控件样式Styling Controls
在Silverlight中有2种方式设置控件的样式:(1)直接在控件中应用样式Applying Styles Inline。示例代码如下:
<TextBlock x:Name="TitlePrompt" Text="Title: " VerticalAlignment="Bottom"
HorizontalAlignment="Right" Grid.Row="0" Grid.Column="0"
FontFamily="Comic Sans MS"
FontSize="16"
FontWeight="Bold"
Foreground="Red" />
(2)创建并应用Style对象
Style对象是可以重用的资源,你可以应用到任何container,或者通过放置在App.xaml 的Resources节,应用到整个项目。
    <Application.Resources>
        <Style TargetType="TextBlock" x:Key="TextBlockStyle">
            <Setter Property="VerticalAlignment" Value="Bottom"/>
            <Setter Property="HorizontalAlignment" Value="Right" />
            <Setter Property="FontFamily" Value="宋体" />
            <Setter Property="FontSize" Value="16" />
            <Setter Property="Foreground" Value="Blue" />
        </Style>
    </Application.Resources>
范例程序运行界面:
 
本范例程序来自于《Programming .NET 3.5》,欢迎下载交流。

转载于:https://www.cnblogs.com/entlibforum/archive/2009/03/11/1408330.html

Silverlight 2 数据绑定演示程序(附源代码下载)相关推荐

  1. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...

     本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较    (三)SSIS的简介    (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介 ...

  2. 详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3)

    详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3) 上一节简单讲了下FP树的生成,在这一节我将描述FP树的挖掘过程. 首先我们回顾一下要挖掘的特征项及样本空间: ...

  3. c#ovalshape_【原创】C# 实现拖拉控件改变位置与大小(SamWang)(附源代码下载)

    前言: 很多时候我们需要在运行时,动态地改变控件的位置以及大小,以获得更好的布局.比如说实际项目中的可自定义的报表.可自定义的单据等诸如此类.它们有个特点就是允许客户或者二次开发人员设计它们需要的界面 ...

  4. WCF技术剖析之二十八:自己动手获取元数据[附源代码下载]

    WCF技术剖析之二十八:自己动手获取元数据[附源代码下载] 原文:WCF技术剖析之二十八:自己动手获取元数据[附源代码下载] 元数据的发布方式决定了元数据的获取行为,WCF服务元数据架构体系通过Ser ...

  5. python中fp是什么意思_详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3)...

    详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(3) 上一节简单讲了下FP树的生成,在这一节我将描述FP树的挖掘过程. 首先我们回顾一下要挖掘的特征项及样本空间: ...

  6. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转...

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较    ( ...

  7. C#生成CHM文件(应用篇)之代码库编辑器(3)【附源代码下载】

    在这篇文章中,我将介绍AlexisEditor项目下主要Form的实现,即MainForm.EditForm. MainForm MainForm包含的主要变量如下 以frm开头的都是对应的窗体变量, ...

  8. Python实用脚本/算法集合, 附源代码下载

    学习编程.学习Python最好的方式就是练习,哪怕是新手,只要不断地敲代码输出,肯定会有神效. Python的练手项目很多,特别是Github上,建议不管新手.老司机都去看看. 这里推荐给大家两个Gi ...

  9. RT-Thread4.0正式发布了,还支持SMP (内附源代码下载地址)

    源代码网盘下载地址:https://pan.baidu.com/s/1mgIAyWo#list/path=%2F (下拉至底部及可见RT-Thread4.0压缩包) RT-Thread 4.0版本代码 ...

最新文章

  1. code vs 把所有行拼接成一行_关于SQL Server将一列的多行内容拼接成一行的问题讨论...
  2. 【MySQL】 日 常 整 理 记 录 分 享
  3. 查看Linus中自带的jdk ,设置JAVA_HOME
  4. [SpringBoot2]定制化原理_SpringBoot定制化组件的几种方式
  5. java自定义一个timeout,Timeout操作符 RxJava 学习笔记二十一
  6. java excel api及详细教程_针对Java Excel API及详细教程
  7. python中字典的键是唯一的吗_Python怎么通过字典的键和值做一个登录程序?
  8. 读zepto源码之工具函数
  9. ubuntu16.04安装谷歌拼音输入法并可在QtCreator中使用
  10. win10 NET Framework 3.5(包括.NET 2.0和3.0)错误代码0x800f081f 的解决方法
  11. 创造一颗属于你的星球
  12. input和textarea中字体样式不同的解决方法
  13. Python语言入门这一篇就够了-学习笔记(十二万字)
  14. 爆火的ChatGPT到底能做什么?5分钟带你进入AI的大门
  15. 练习:测测你优势教养的程度
  16. Xftp/Xshell 要继续使用此程序,您必须应用最新的更新或使用新版本
  17. 使用conda进行python环境管理
  18. ym——安卓巴士总结了近百个Android优秀开源项
  19. 【几种恢复误关Chrome标签页的方法】
  20. Android修改系统中默认字体大小

热门文章

  1. jstack可以定位到线程堆栈
  2. oracle 多条执行语句同时执行
  3. mysql 的not null 与 null的区别(转,恍然大悟)
  4. @Service注解的使用
  5. Glide使用OkHttp加载图片
  6. android 启动速度优化终极方案
  7. 【剑指offer-Java版】21包含min函数的栈
  8. Android10.0 Binder通信原理(三)-ServiceManager篇
  9. 一步一步教你如何导出JAR包后将多个JAR包合并,并混淆
  10. ListView 常用属性