MSDN:
绑定示意图
概念:
DataContext: 参与数据绑定时的数据上下文,此上下文是可继承的,当然子控件也可以指定自已的DataContext来重写父控件的DataContext
目标UI属性:指要绑定到UI上的属性,可用作或显或更改数据,是FrameworkElement 的任一 DependencyProperty(依赖属性)
数据流方向:指数据的流向,有三种 OneTime,OneWay,TwoWay,是通过Binding的Mode属性设置的
值转换器(可选): 指将数据从UI到绑定源之间的转换,是一个实现了 IValueConverter 的类
最简单的绑定:
XAML:
定义一个类
绑定代码:
效果如下:
使用代码完成绑定
因为,Binding已指定所有内容,所以XAML不需要Bing属性
数据流的三种流方式:
OneTime:创建绑定时更新目标属性。
OneWay:创建绑定时更新目标属性。对源对象的更改也会传播到目标。(源 --> UI属性)
TwoWay:在进行任一更改时会相应更新目标或源对象。创建绑定后,目标属性从源进行更新。 (源 <--> UI属性)
其中: OneWay和TwoWay要实现INotifyPropertyChanged (属性更改)或 INotifyCollectionChanged(集合更改,如ItemControl失集合绑定) 接口
在实现您自己的集合之前,应考虑使用 ObservableCollection<(Of <(<'T>)>)> 类,该类具有 INotifyCollectionChanged 和 INotifyPropertyChanged 的内置实现。
一个实现了 INotifyPropertyChanged 的类(类A)
这样当UI属性绑定到源时
如果使用其OneWay绑定时,对数据源中的数据如name修改时,会自动反映到UI属性上面.
如果使用其TwoWay绑定是,对数据或UI的属性更改都会相应反映到UI属性或源上.
注意:
在 TwoWay 绑定中,对目标的更改会自动更新源,但绑定到 TextBox 的 Text 属性时除外。这种情况下,更新仅在 TextBox 失去焦点时发生。
有时我们并不想U属性的更新立即反映到源,而是通过我们自动控制.
这时需要没置 Binding 的
Or
然后在后端通过:
这样就得以手动控制保进更新源.
Silverlight 支持在 TwoWay 绑定中对从目标到源的更新进行基本数据验证。在发生以下情况时,Silverlight 会报告验证错误:
在绑定引擎的类型转换器中引发了异常。
在绑定对象的 set 访问器中引发了异常。
在应用到数据对象或成员的验证属性中引发了异常。
将 ValIDatesOnExceptions 设置为 true 的作用是告知绑定引擎在发生异常时创建验证错误。将 NotifyOnValIDationError 设置为 true 的作用是告知绑定引擎在验证错误发生和解决时引发 BindingValIDationError 事件。例如,您可以处理错误事件,以便记录错误或提供其他可视反馈。
若要处理 BindingValIDationError 事件,请在目标对象或其任一父级上创建一个事件处理程序。BindingValIDationError 事件为路由事件,因此如果不在引发该事件的元素上予以处理,它将不断向上冒泡,直到得到处理。
如果设置 Binding的 ValIDatesOnExceptions 为True 和 NotifyOnValIDationError 为True,还会得到错误提示反馈.
如(见上面类A的定义)
总结
以上是内存溢出为你收集整理的Silverlight中的数据绑定学习全部内容,希望文章能够帮你解决Silverlight中的数据绑定学习所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)