ListPicker是Toolkit里很常用的一个控件,在Nov 2011版里面似乎进行了调整,ItemCountThreshold属性被修改成了只读,默认为5,不能够手工设置。而且还有一个诡异的问题,如果使用Items.Add方法手工添加Item,在Item大于5个的时候进入Full Mode时会抛出不明异常。

经过Google,得知发生异常的原因:

ListPickerItem属于UIElement,当ListPicker为Expanded Mode时,它会在本Page的Visual Tree中渲染ListPickerItems。然而当项数大于5、进入Full Mode后,ListPicker会打开一个新的Page,使用一个ListBox来渲染ListPickerItems。这个ListBox的Items直接被设置为ListPicker的Items属性,然后会把ListPicker的ListPickerItems放到自己的Visual Tree上。问题来了:一个ListboxItem在Visual Tree上被包含在两个地方!

尽管还是有些不明觉厉,但这就是开发组的原话的翻译[1],请大家自行参考。解决方法就是不要手动添加ListPickerItem,使用数据绑定后问题解决。

参考资料:
[1] ListPicker issue adding more than five elements

» 转载请注明来源及链接:未来代码研究所

Related Posts:

Leave a Reply

World Line
Time Machine
Online Tools