博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight开发历程--(数据流方向和数据更新通知)
阅读量:6745 次
发布时间:2019-06-25

本文共 2087 字,大约阅读时间需要 6 分钟。

数据绑定是数据源和绑定目标之间的一座桥梁,在Silverlight中数据流的方向主为三种:

OneWay:单向,仅从数据源绑定到目标。

TwoWay:双向,即可以从数据源绑定到目标,当目标的数据发生更新时也可以反馈给数据源,使其发生更新。

OneTime:OnTime比较特殊,仅从数据源获取一次,不再获取这样可以获取性能上的提升。

如下面的例子:

XAML:

{Binding Title,Mode=OneWay} //表示给TextBlock绑定了数据源,并指定TextBlock的Text属性绑定了数据源中的Title,OneWay表示数据绑定是单向的
{Binding Price,Mode=TwoWay} //TwoWay,数据绑定是双向的

后台C#:

public partial class NotifyChanged : UserControl    {        book b = new book();        public NotifyChanged()        {            InitializeComponent();            //给实体类赋值            b.Title = "Silverlight开发专题";            b.Price = 70.00;            //给页面绑定控件绑定数据源            title.DataContext = b;            price.DataContext = b;        }        private void btn_chaned_Click(object sender, RoutedEventArgs e)        {            //当点击按钮的时候。不直接对绑定控件的值进行更改,而是更新Book数据源,则页面的绑定值也将会随着同步更新            b.Price = 50;        }    }

book.cs

public class book : INotifyPropertyChanged    {        //book继承了INotifyPropertyChanged,实现了PropertyChanged事件,并对Price属性添加了监视        ///         /// 标题        ///         public string Title        { get; set; }        private double _price;        ///         /// 价格        ///         public double Price        {            get { return _price; }            set            {                _price = value;                NotifyProperyChanged("Price");            }        }        public event PropertyChangedEventHandler PropertyChanged;        private void NotifyProperyChanged(string PropertyName)        {            if (PropertyChanged != null)            {                PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));            }        }    }

book是一个实体类,他继承了INotifyPropertyChanged,实现了PropertyChanged事件,并对Price属性添加了监视。

使用INotifyPropertyChanged接口要引用命名空间,using System.ComponentModel; 仅仅有数据流方向了还不够,数据流方向只是告诉我们该通知的对象,我们需要有一个中介来完成这个通知,所以我们需要使用INotifyPropertyChanged中的PropertyChanged来通知更改对象使其发生更新。

运行例子会看到,当页面初始化以后,book已经为TextBlock绑定上了数据,当点击按钮更改数据源book的时候,页面的价格也发生了改变。我们并没有直接更改TextBlock的值,而是通过更新数据源来使其值发生更改。

转载地址:http://ltuho.baihongyu.com/

你可能感兴趣的文章
【程序员眼中的统计学(6.2)】原创实现二项分布算法以及应用
查看>>
->和.的区别
查看>>
【应用笔记】【AN003】VC++环境下基于以太网的4-20mA电流采集
查看>>
php接入域账号登陆代码
查看>>
ShadowMap渲染阴影方法及问题 【转】
查看>>
项目分享一:在项目中使用 IScroll 所碰到的那些坑
查看>>
回文串问题总结
查看>>
【GLSL教程】(五)卡通着色 【转】
查看>>
Android使用ViewPager实现左右循环滑动及轮播效果
查看>>
Xamarin Android项目真机测试闪退
查看>>
Linux字符集的查看及修改
查看>>
AD采样模块采集带模拟量真空表值的实验
查看>>
安全-分析深圳电信的新型HTTP劫持方式
查看>>
pycharm快捷键 - 官方全
查看>>
SaltStack项目实战(七)
查看>>
MyEclipse无法删除项目下的文件
查看>>
如何使用Android studio打开eclipse项目
查看>>
开源镜像站汇总
查看>>
Win10系统安装Tomcat8
查看>>
leetcode 669. Trim a Binary Search Tree
查看>>