Silverlight开发历程--(数据流方向和数据更新通知)

Silverlight开发历程--(数据流方向和数据更新通知),第1张

概述数据绑定是数据源和绑定目标之间的一座桥梁,在Silverlight中数据流的方向主为三种: OneWay:单向,仅从数据源绑定到目标。 TwoWay:双向,即可以从数据源绑定到目标,当目标的数据发生更新时也可以反馈给数据源,使其发生更新。 OneTime:OnTime比较特殊,仅从数据源获取一次,不再获取这样可以获取性能上的提升。 如下面的例子: XAML: <Canvas x:Name="La

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

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

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

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

如下面的例子:

XAML:

 <Canvas x:name="LayoutRoot" Background="White">        <Canvas>            <TextBlock x:name="Title" Text="{Binding Title,Mode=OneWay}" Canvas.left="10" Canvas.top="10" />            <TextBlock x:name="price" Text="{Binding Price,Mode=TwoWay}" Canvas.left="10" Canvas.top="40" />        </Canvas>        <button x:name="btn_chaned" WIDth="70" Height="20" Content="修改" Click="btn_chaned_Click" Canvas.left="10" Canvas.top="60" />    </Canvas>
{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属性添加了监视        /// <summary>        /// 标题        /// </summary>        public string Title        { get; set; }        private double _price;        /// <summary>        /// 价格        /// </summary>        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的值,而是通过更新数据源来使其值发生更改。

总结

以上是内存溢出为你收集整理的Silverlight开发历程--(数据流方向和数据更新通知)全部内容,希望文章能够帮你解决Silverlight开发历程--(数据流方向和数据更新通知)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1072774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存