Shuhari

2009年11月12日

Silverlight陷阱:XAML中不能使用自定义字典

摘要: 我们知道,XAML中实际上是可以放置任何对象的,而系统将按照如下的规则管理嵌套的内容: 1. 如果对象实现了IList,那么嵌套内容将通过IList.Add添加到父对象; 2. 如果对象实现了IDictionary,并且元素用x:Key指定了键值,那么嵌套内容将通过IDictionary.Add添加到父对象; 3. 如果只有父对象用ContentPropertyAttribute声明了内容属性,那么嵌套内容将被赋值为到该属性。 我们在目前的项目中使用了很多XAML声明来减少编码量,但是在使用中我们发现,第2条对于Silverlight是不适用的,Silverlight的 XAML似乎只支持对Resources属性用字典方式来声明,对于自定义的字典内容,即使是ResourceDictionary也无法读取,否则运行时就会抛出异常。因为同样的方法在服务端已经普遍使用,所以我们把代码应用到Silverlight工程中的时候,根本没有想到这方面会出问题。从而花了很长时间、走了很多弯路去查找自己程序中的Bug,反复作了大量实验后,终于确定:这个问题来源于Silverlight和WPF 阅读全文

posted @ 2009-11-12 17:38 Shuhari 阅读(1626) 评论(1) 推荐(3) 编辑

导航