【发布时间】:2023-04-02 11:07:01
【问题描述】:
这个问题似乎应该有一个非常简单的答案,但我似乎无法弄清楚我的程序中发生了什么。
我有一个使用ListView 的C# WPF 应用程序。 ListView 有几个项目,我通过这样做添加到其中
myListView.Items.Add("one");
myListView.Items.Add("two");
现在我尝试访问ListView 中的第二个ListViewItem。
ListViewItem item = myListView.Items[myListView.Items.Count - 1] as ListViewItem;
发生的错误是 myListViewItem item 为 null 并且未重新调整 ListViewItem。
我注意到当我输入下面的代码时,我的var item 正在返回一个值为“two”的字符串。所以我不明白为什么我无法以ListViewItem 的身份访问该对象。
var item = clv_TraceGroups.Items[clv_TraceGroups.Items.Count - 1];
【问题讨论】:
-
当您向 Items 集合添加字符串时,它不会神奇地包含 ListViewItems。为什么你想要得到一个 ListViewItem,而不仅仅是你添加的项目字符串?
-
我想获取 ListViewItem,因为我的 ListView 有一个带有复选框的项目模板,我想将特定 ListViewItem 的 checkbox.IsChecked 属性设置为 true。
-
您应该将 ListView 的 ItemsSource 绑定到具有字符串和 bool 属性的对象集合。在 ItemTemplate 中,将 CheckBox 绑定到 bool 项属性。通过 ItemContainerGenerator 访问 ListViewItems 是一个 hacky 解决方案,因为实际上应该通过将数据绑定到适当的视图模型来完成。
标签: c# wpf listview listviewitem