当我尝试通过可观察的集合添加ListViewItem并更改它的DataTemplate时,我的代码出现问题。
CurrentTicket.Add(new Item { itemID = selectedItem.itemID, price = price, name = selectedItem.name, taxID = selectedItem.taxID,modName = modNames });
if(modNames.Count() != 0)
{
ListViewItem lvi = (ticketListBox).ContainerFromIndex(ticketListBox.Items.Count - 1) as ListViewItem;
lvi.ContentTemplate = (DataTemplate)this.Resources["CurrentTicketModDataTemplate"];
}
当我运行时,lvi返回null并且下一行无法执行。任何建议将不胜感激。
答案 0 :(得分:1)
它未定义的原因是因为它创建ListViewItem所需的时间比添加到observable集合的时间长。 解决方案是等到它被定义:
ListViewItem lvi = ticketListview.ContainerFromItem(item) as ListViewItem;
while(lvi == null)
{
await Task.Delay(25);
lvi = ticketListview.ContainerFromItem(item) as ListViewItem;
}
答案 1 :(得分:0)
您可以尝试设置DataTemplate和DataContext。
像这样:
ListViewItem lvi = new ListViewItem();
lvi.DataTemplate = ticketListBox.DataTemplate;
lvi.DataContext = YourObservableCollection.Last();