BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

解决WPF/Silverlight中的数据绑定问题

| 作者 Jonathan Allen 关注 523 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2010年7月6日. 估计阅读时间: 2 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

WPF中的数据绑定让人眼前一亮,自从Visual Basic 3以来,微软一直致力于将灵活性、健壮性与易用性有机地整合起来。虽然WPF并不完美,但它要比其前辈更加近接于这个目标。然而遗憾的是,其失败模型是把双刃剑,它并不会抛出应用崩溃异常,而是将绑定错误直接写到追踪监听器当中。这样,要想找到错误的根源比登天还难。

关于WPF中数据绑定的最主要的文档是Data Binding Overview。虽说该文档是WPF或Silverlight开发者的必备读物,但几乎没有谈到调试和问题的解决方法,关于调试只用了一句话的概括。

调试机制

可以为绑定对象设置附加属性PresentationTraceSources.TraceLevel以获取关于特定绑定的状态信息。

Karl Shifflett就数据绑定给出了一些建议,但几乎都是泛泛而谈,比如检查DataContext是否包含了正确的对象等。由于Silverlight经常要在IDE外运行,他的这些建议也根本排不上用场。

幸好,一些第三方工具可以在一定程度上帮助我们解决这些问题。Cory Plotts的Snoop可以附加到任何.NET 3.5或4.0 WPF应用上。一旦加载完毕,它可以给出关于控件树、属性值来自于何处以及数据绑定错误等的相关信息。Snoop 2.6位于CodePlex上,基于Microsoft Public License。

另一个工具是Karl Shifflett的Glimpse,它无法附加到Silverlight应用上而必须要编译到应用中才行。启动后,它会通过一个浮动窗口通知用户未处理的应用与数据绑定异常。可以从Karl的博客上下载Glimpse for Silverlight

另一个常用的技术是增加一个假值转换器,然后在其中设定断点。Marlon Grech曾写过一篇文章谈到了如何编写调试转换器。在代码中硬编码断点声明后就不需要手工设置断点了。

查看英文原文:Fixing Data Binding Problems in WPF/Silverlight

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT