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

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

This entry was posted in UI. Bookmark the permalink.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s