下面我们开始讲解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] 举报,一经查实,本站将立刻删除。