2019独角兽企业重金招聘Python工程师标准>>>
下面我们开始讲解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);
}
原文链接: http://blog.csdn.net/mypc2010/article/details/7952726