设为首页 收藏本站
查看: 695|回复: 0

《Windows Phone 7程序设计》样章-《数据绑定》

[复制链接]

尚未签到

发表于 2015-5-8 09:21:58 | 显示全部楼层 |阅读模式
  在我看来数据绑定是XAML类程序(WPF,Silverlight,WP7,Windows8)最最关键的概念,也是MVVM模式的基础,如果一位开发者在开发XAML类程序时并没有用上数据绑定,那么我觉得他/她还没有掌握开发XAML类程序的能力。数据绑定可以说每个XAML类程序开发者必须掌握的基本技能之一。下面是《数据绑定》样章的一部分,如果觉得翻译的不错而且条件许可,请购买正版书,谢谢您为中国文化事业的贡献。如果觉得有问题请指出,我们会总结堪错列表,谢谢!
  
  
  ---------------------------------------------------------------以下是《数据绑定》样章的一部分-------------------------------------------------------------
  假设你想让用户与Slider控件进行交互,而且你也想与ColorScroll程序一样,通过TextBlock显示Slider当前的值。其实很简单。只要为Slider控件的ValueChanged事件创建一个处理程序就可以了,当调用处理程序的时候,从Slider取出Value属性的值并将其转换成字符串,然后把该字符串设置给TextBlock的Text属性。
像这样的任务非常普遍,因此Silverlight提供了一种简便的机制来实现这些任务。这种机制称为数据绑定(data binding),或者就简称为绑定(binding)。数据绑定是一个对象的一个属性与另外一个对象的一个属性之间的一条链接(link),因此在绑定的情况下当一个属性发生改变时,另一个属性也随之更新。绑定可以是双向的(bidirectional),在这种情况下,其中一个属性发生的变化会引起另一个属性也随之发生变化。
  从本质上说,数据绑定可能像你所期望的那样:由于注册了一个事件处理程序,使得一个属性从另外一个属性中获取更新,期间可能进行了一些数据转换。通常你可以完全通过XAML来定义数据绑定,这意味着你不必编写任何代码。从语法上看,这好像不需要移动任何部件就能传输数据了。
  演示数据绑定最简单的方法是使用两个可视化元素,例如Slider和TextBlock元素,我也从这两个元素开始。但是,如果把可视化元素和基础数据源进行绑定的话,更能体现出数据绑定的强大威力。
  本章的目标是避免在代码隐藏文件中显式地使用事件处理程序,但是在本章的结束部分我不得不使用几个事件处理程序。当然,我们还是需要一些其他代码来支持XAML中的数据绑定,但这些代码中的大部分可以恰当地归类为业务对象(business object),而不是用户界面元素。
  
绑定源与目标
  在典型的数据绑定中,一个对象的属性发生变化时,另一个对象的属性也随之自动更新。提供数据的对象,例如Slider,被认为是数据绑定的源(source);接收数据的对象(如TextBlock)是绑定的目标(target)。
通常给数据绑定源指定一个名字:


  你可以把目标属性作为一个属性元素 并赋值给类型为Binding的对象:
  




  使用ElementName属性指定源元素的名称;使用Path属性指定源属性的名称,在这个例子中Path是Slider的Value属性。有时候把这种类型的绑定称为元素名称绑定,因为绑定源是一个可视化元素,并通过名称来引用。
  为了使语法变得更加友好,Silverlight为Binding提供了一个标记扩展(markup extension),在此,所有的东西都定义在一对花括号里面。(这是Silverlight for Windows Phone的几个标记扩展中的一个。第7章介绍过StaticResource,第16章将介绍TemplateBinding。)这里是更精简的语法:


  请注意,ElementName和Path的设置用一个逗号分隔,而slider和Value名称的引号已经去掉了。引号永远都不会出现在标记扩展的大括号中。
SliderBindings程序使用了这样的绑定方式,你可以试验一下,尝试做一些修改。这一切都在XAML文件里面:
        Silverlight项目:SliderBindings  文件:MainPage.xaml(节选)















  这个页面包含了一个范围从0到180的Slider,以及一个TextBlock,TextBlock的Text属性绑定到Slider的Value属性上,另外还有一个Rectangle,它的Width属性也绑定到Slider相同的Value属性上。Rectangle还有一个RotateTransform属性,这个属性使得Rectangle元素旋转了90°。
  操作Slider时,TextBlock显示Slider的值,而Rectangle的高度也随之变大或者变小。(Binding的目标是Rectangle的Width属性,而Rectangle的转角是90°。)
  在Binding扩展标记中,属性的顺序无关紧要。你可以把Path属性放在前面:

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-64872-1-1.html 上篇帖子: Windows 7的"上帝模式" 下篇帖子: 与众不同 windows phone (7)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表