Silverlight中的数据绑定学习

Silverlight中的数据绑定学习,第1张

概述MSDN:   绑定示意图       概念: DataContext: 参与数据绑定时的数据上下文,此上下文是可继承的,当然子控件也可以指定自已的DataContext来重写父控件的DataContext   目标UI属性:指要绑定到UI上的属性,可用作或显或更改数据,是FrameworkElement 的任一 DependencyProperty(依赖属性)   数据流方向:指数据的流向,有三

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>)>)> 类,该类具有 INotifyCollectionChangedINotifyPropertyChanged 的内置实现。

 

一个实现了 INotifyPropertyChanged  的类(类A)

 

 

这样当UI属性绑定到源时

如果使用其OneWay绑定时,对数据源中的数据如name修改时,会自动反映到UI属性上面.

如果使用其TwoWay绑定是,对数据或UI的属性更改都会相应反映到UI属性或源上.

 

 

注意:

TwoWay 绑定中,对目标的更改会自动更新源,但绑定到 TextBoxText 属性时除外。这种情况下,更新仅在 TextBox 失去焦点时发生。

 

有时我们并不想U属性的更新立即反映到源,而是通过我们自动控制.

这时需要没置 Binding 的

Or

然后在后端通过:

 

 

这样就得以手动控制保进更新源.

 

 

Silverlight 支持在 TwoWay 绑定中对从目标到源的更新进行基本数据验证。在发生以下情况时,Silverlight 会报告验证错误:

在绑定引擎的类型转换器中引发了异常。

在绑定对象的 set 访问器中引发了异常。

在应用到数据对象或成员的验证属性中引发了异常。

ValIDatesOnExceptions 设置为 true 的作用是告知绑定引擎在发生异常时创建验证错误。将 NotifyOnValIDationError 设置为 true 的作用是告知绑定引擎在验证错误发生和解决时引发 BindingValIDationError 事件。例如,您可以处理错误事件,以便记录错误或提供其他可视反馈。 

 

若要处理 BindingValIDationError 事件,请在目标对象或其任一父级上创建一个事件处理程序。BindingValIDationError 事件为路由事件,因此如果不在引发该事件的元素上予以处理,它将不断向上冒泡,直到得到处理。

 

如果设置 Binding的 ValIDatesOnExceptions 为True 和 NotifyOnValIDationError 为True,还会得到错误提示反馈. 

如(见上面类A的定义)

 

总结

以上是内存溢出为你收集整理的Silverlight中的数据绑定学习全部内容,希望文章能够帮你解决Silverlight中的数据绑定学习所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1027943.html

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

发表评论

登录后才能评论

评论列表(0条)

保存