我有ListBox
一个 Windows Phone 应用程序。在一个按钮操作中,我需要ListBoxItem
在被ListBox
调用的每一个上设置一个转换和名称lb
。
我的数据源是
var items = new ObservableCollection<string>();
for (int i = 0; i < 10; ++i)
{
items.Add("Item " + i);
}
lb.ItemsSource = items;
我有一个代码可以添加到ListBox 中的RenderTransform
每个ListBoxItem
for (int i = 0; i < items.Count;++i )
{
var item = this.lb.ItemContainerGenerator.ContainerFromIndex(i) as ListBoxItem;
item.RenderTransform = new CompositeTransform();
item.Name = i.ToString() //needed for storybord
//another stuff
}
它工作正常。问题是我首先需要在列表中插入和项目。当我items.Insert(index,"test")
在 for 循环之前调用时,我得到一个异常,即 item 为 null when i==index
。插入新项目时无关紧要,该项目总是为空。
我究竟做错了什么?或者ListBox
在尝试访问之前插入新项目时是否需要等待事件ListBoxItem
?
编辑:我提取了代码并将其放入解决方案中:https ://dl.dropboxusercontent.com/u/73642/PhoneApp2.zip 。我首先将一个假项目插入到新解决方案中,然后将其淡出并使用动画将原始项目移动到该位置。