Windows phone 7 WP7-VisualTreeHelper循环浏览所有列表框项

Windows phone 7 WP7-VisualTreeHelper循环浏览所有列表框项,windows-phone-7,Windows Phone 7,我需要根据选中的项目创建一个新的列表框。如果列表框上只有20个条目,那么下面的代码实际上是有效的,但是添加更多条目会使它崩溃。有谁知道如何使它工作,或有一个不同的方法吗?在列表框中循环是否有限制 //对20个项目都很好, //但我的实际清单包含95项。。。 私有无效btnCreateNewList_单击(对象发送者,路由目标e) { int totalItemsCB=ListCheckBoxGlossary.Items.Count; 对于(int ii=0;ii

我需要根据选中的项目创建一个新的列表框。如果列表框上只有20个条目,那么下面的代码实际上是有效的,但是添加更多条目会使它崩溃。有谁知道如何使它工作,或有一个不同的方法吗?在列表框中循环是否有限制

//对20个项目都很好,
//但我的实际清单包含95项。。。
私有无效btnCreateNewList_单击(对象发送者,路由目标e)
{
int totalItemsCB=ListCheckBoxGlossary.Items.Count;
对于(int ii=0;ii
和xaml:


列表是虚拟的-控件是根据需要创建的,可能会重复使用(我认为)

您可以选择将
列表框
设置为不虚拟化(覆盖模板,对于容器,而不是
序列化堆栈面板
,选择常规的
堆栈面板


您的另一个(也是更好的)选择是通过数据绑定进行检查。在大多数情况下更容易、更快。

您得到的异常是什么?您好,,,我得到以下信息:引用不是var count=VisualTreeHelper.GetChildrenCount(parentElement)行上的有效可视依赖对象;但是如果我在同一个列表上的项目较少,它就会通过……感谢您的回复,但是我如何通过数据竞价进行检查呢?你的意思是像添加点击到新列表框的项目一样?(我试过了,但是如果我取消选中一个项目怎么办?我如何更新列表框?你有什么样的例子吗?我仍然很困惑…你是在将{Items}绑定到你的列表框-如果每个项目都有一个布尔值,表示它是否被选中,你可以将它绑定到复选框{IsChecked}依赖属性,基本上就是让它“工作”我试图理解并解决我在本文中发现的问题:ListBoxItems如果不在视图中就会被销毁。因此,ContainerFromItem()和ContainerFromIndex()返回null,因为ListBoxItems不存在。这显然是内存/性能问题().这正是我的代码所发生的事情,因为如果我用几个项目测试它,它会运行得很好…考虑到这一点,我只是强制使用Dispatcher.BeginInvoke(()=>{ListCheckBoxGlossary.SelectedIndex=ii;我设置了一个睡眠线程(用于测试)我正在生成一个新的列表框,只保留复选框(在列表框中)的内容…我无法完全执行您所说的,因为如果我绑定复选框,生成的新列表框将始终保持不变,unkeck不会产生任何影响。我将返回到它,我肯定遗漏了什么,谢谢。将复选框双向绑定,然后当用户选中复选框时,您的基础数据也将更改。