微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight中数据绑定讲解

 

下面我们开始讲解silverlight中一个比较重要的知识——数据绑定。

我们对于数据绑定并不陌生,在我们ASP.NET中就涉及到了数据绑定,像我们之前学的DataList,GridView,repeater等这些数据源控件是不是都可以给它设置一个数据源,然后让这些数据源控件绑定数据源的数据,然后在我们的前台界面中显示出来。

OK,那么我们silverlight中也是一样的。

下面我们来看这样一个例子:

 

我在页面中放一个textBox一个Slider,我们知道Slider有一个Value值,认为0,那么现在我要实现这样一种效果,当我拖动Slider上的滑块时,我要让textBox的文本框中现实出来Value的当前值。

回想下,我们在学ASP.NET的数据绑定的时候,比如我们要让DataList绑定数据,是不是要给它设置一个数据源,然后再调用bind方法想可以呀?

那么,在我们silverlight中,我们在silverlight中进行数据绑定,需要调用到Binding这个类,而这个类所做的命名空间是:System.Windows.Data

好的,首先我们第一步,引用命名空间。

然后我们要想让它在界面一加载的时候就进行数据绑定,那么我们就在LayoutRoot_Loaded事件中添加我们的绑定代码

好的,第二步,我们实例化一个Binding类的一个实例,这个类的构造函数有两个,我们采取第二种方式。

它要求我们穿一个string类型的,数据源的初始属性路径,也就是说,我们要绑定数据源的哪个属性,这里我们要绑定的是Slider的Value属性,那么我们的代码就应该这样写:

Binding b = new Binding("Value");

下面第三步,设置b的数据源为slider1,代码如下:

b.source = slider1;

第四步,我们要设置绑定的模式,绑定模式有三种,我们先用OneTime这种模式,等下再详细说下这几种模式的区别。

b.Mode = BindingMode.OneTime;

最后,我们调用textBox1的SetBinding方法就可以了,注意,SetBinding方法第一参数是要传一DependencyProperty

的参数,也就是可依赖属性,我们先这样写,等下看效果

textBox1.SetBinding(TextBox.TextProperty,b);

 

我们可以看到,其实slider的值已经绑定过来了,它认是0,现在在textBox显示的也是0,那么为什么我拖动它没反应呢?大家还记得刚才的绑定模式么?我说了有3种,那么第一种OneTime叫做一次绑定,也就是说只能绑定一次,那么还有两种OneWay,单向绑定。TwoWay,双向绑定,我们分别试试。

b.Mode = BindingMode.OneWay;

可以看到,我现在滑动slider滑块值,那么textBox的值也跟着变了,那么双向绑定是个什么意思呢?

我们知道,这里我是把slider作为数据源,当slider的Value值发生改变时,textBox的Text值也跟着改变。

那么,假如我现在想更改textBox的Text值,我让slider也跟着变,怎么办呢?这时候我们及用到了双向绑定。

也就是互为数据源。

OK,那么我们完整的代码如下:

 private void LayoutRoot_Loaded(object sender,RoutedEventArgs e)         {             Binding b = new Binding("Value");             b.source = slider1;             b.Mode = BindingMode.TwoWay;             textBox1.SetBinding(TextBox.TextProperty,b);         }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐