wpf listviewitem 在初始化时返回 null

wpf listviewitem returning null when initialized

这个问题似乎应该有一个非常简单的答案,但我似乎无法弄清楚我的程序中发生了什么。

我有一个使用 ListView 的 C# WPF 应用程序。 ListView 中有几个项目,我通过这样做

添加到其中
myListView.Items.Add("one");
myListView.Items.Add("two");

现在我尝试访问 ListView 中的第二个 ListViewItem

ListViewItem item = myListView.Items[myListView.Items.Count - 1] as ListViewItem;

发生的错误是我的ListViewItem item 为空并且没有重新调整 ListViewItem

我注意到,当我输入下面的代码时,我的 var item 返回一个值为 "two" 的字符串。所以我不明白为什么我无法以 ListViewItem.

的形式访问该对象
var item = clv_TraceGroups.Items[clv_TraceGroups.Items.Count - 1];

myListView.Items[myListView.Items.Count - 1] returns 一个 string,即您添加到 Items collection.

的实际项目

您可以使用 ItemContainerGenerator:

获取对此项的 ListViewItem 容器的引用
ListViewItem item = myListView.ItemContainerGenerator.ContainerFromIndex(myListView.Items.Count - 1) as ListViewItem;

请注意,如果您在 ListView 中有很多项目并且您正试图获取对容器的引用但由于性能原因已被虚拟化的项目,则此方法将不起作用。

您可能应该问自己为什么需要对 ListViewItem 容器的引用。可能有更好的方法来解决您正在尝试做的任何事情。