这个问题似乎应该有一个非常简单的答案,但我似乎无法弄清楚我的计划中发生了什么。
我有一个使用ListView
的C#WPF应用程序。 ListView
中有几个项目,我通过这样做添加到其中
myListView.Items.Add("one");
myListView.Items.Add("two");
现在我尝试访问ListViewItem
中的第二个ListView
。
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];
答案 0 :(得分:0)
myListView.Items[myListView.Items.Count - 1]
会返回string
,即您添加到Items
集合中的实际项目。
您可以使用ListViewItem
获取此项目的ItemContainerGenerator
容器的引用:
ListViewItem item = myListView.ItemContainerGenerator.ContainerFromIndex(myListView.Items.Count - 1) as ListViewItem;
请注意,如果ListView
中有许多项目,并且您尝试获取对容器的引用,那么这种方法将无效,但出于性能原因,该项目已被虚拟化了。
您应该问自己为什么需要引用ListViewItem
容器。可能有更好的方法可以解决你想要做的事情。