silverlight 动态添加控件出现“值不在预期的范围内”错误 On 程序人生, 解决方案 @2010-09-04
开发环境:VS2008,silverlight3
需求:创建树控件,如果有子节点,则在展开节点的时候动态加载其子节点。
问题:为了实现这样的效果,我对每个节点进行了判断,看其是否有子节点,如果有则加一个临时子节点,当展开这个节点的时候再把临时节点删除,随后再动态循环加载其真正的子节点,这个在第一次加载的时候是没有什么问题的。即展开节点,会正确的显示出其下的子节点。但是当我点击刷新按钮(从新加载了一次树控件)后,再去触发节点的展开事件时会提示“值不在预期的范围内”的错误。然后逐步调试也没有发现什么异常情况。
解决方案:借助于谷大哥,在csdn上找到了答案。原来这是微软的一个BUG(不容易,让额碰到一个)。在动态加载子节点的时候如果不用循环是不会错的,如果是在循环里面就会有这样的错误。解决办法是不要在循环中设置子属性和添加控件,要设置子属性也用 .SetValue()的方式。比如设置节点node的Name属性,就必须用node.SetValue(NameProperty, “wincn.org”);的方式代替node.name = “wincn.org”;
相关链接:http://topic.csdn.net/u/20090825/20/509f2ee8-d1b3-4e8e-acab-6266ab7914c4.html
http://www.cnblogs.com/smjack/archive/2009/03/29/1424414.html




我说两句 »