UWP - 添加时更改 ListViewItem 模板
UWP - Changing ListViewItem Template on Add
当我尝试通过可观察集合添加 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"];
}
当我运行 this lvi returns null 和下一行执行失败。任何建议将不胜感激。
您可以尝试设置 DataTemplate 和 DataContext。
像这样:
ListViewItem lvi = new ListViewItem();
lvi.DataTemplate = ticketListBox.DataTemplate;
lvi.DataContext = YourObservableCollection.Last();
未定义的原因是创建 ListViewItem 的时间比添加到可观察集合的时间多。
解决方案是等到它被定义:
ListViewItem lvi = ticketListview.ContainerFromItem(item) as ListViewItem;
while(lvi == null)
{
await Task.Delay(25);
lvi = ticketListview.ContainerFromItem(item) as ListViewItem;
}
当我尝试通过可观察集合添加 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"];
}
当我运行 this lvi returns null 和下一行执行失败。任何建议将不胜感激。
您可以尝试设置 DataTemplate 和 DataContext。
像这样:
ListViewItem lvi = new ListViewItem();
lvi.DataTemplate = ticketListBox.DataTemplate;
lvi.DataContext = YourObservableCollection.Last();
未定义的原因是创建 ListViewItem 的时间比添加到可观察集合的时间多。 解决方案是等到它被定义:
ListViewItem lvi = ticketListview.ContainerFromItem(item) as ListViewItem;
while(lvi == null)
{
await Task.Delay(25);
lvi = ticketListview.ContainerFromItem(item) as ListViewItem;
}