确定存在于哪个 ListViewItem 复选框

Posted

技术标签:

【中文标题】确定存在于哪个 ListViewItem 复选框【英文标题】:Determining Which ListViewItem Checkbox existed in 【发布时间】:2010-12-26 18:17:00 【问题描述】:

我看到了一些关于这个的东西,但我现在把它弄丢了,再也找不到了。我需要知道复选框存在于哪个 ListViewItem 中,当复选框被选中时(最终会导致它被删除),

我尝试让父母,但显然这不起作用。

XAML:

数据模板> 列表视图>

需要在 Checked 事件中添加什么样的代码才能使其工作? (作为一个附带问题,为什么我的 VerticalAlignment 没有将列中的复选框居中对齐?)

就像我说的那样,我在这种代码中尝试了 parent

私人无效CheckBox_Checked(对象发送者,RoutedEventArgs e) CheckBox cb = (CheckBox)sender; 对象 lv = cb.parent;

如果我在 cb.parent 行上断点,cb.parent 为空。

谢谢, 心理学

【问题讨论】:

你是否需要检查 CheckBox 是否被选中?或者你需要知道在它的行中有一个复选框的项目的索引? No, the checkbox will always start off as non-checked, and when the box is checked the row will get removed (it may change to a button depending on the clients wishes, but current spec is checkbox )。 【参考方案1】:

您可以使用VisualTreeHelper 向上遍历可视化树并找到ListViewItem。但是,如果可能的话,我建议避开这种方法。使用数据绑定等其他 WPF 功能最有可能实现您的目标。

【讨论】:

这就是我的想法,我当前的通过过程是将 Uid 绑定到 listviewitem 的索引,但不知道该怎么做 我以为可能是这个 Binding Path=Index, RelativeSource=RelativeSource FindAncestor, AncestorType=x:Type ListViewItem 但是它抛出“必须为 FindAncestor 指定 AncestorType”。跨度> 好的,有点工作了,但是对于 ListViewItem 的当前索引,找不到 Path=[Attribute] 的正确属性。【参考方案2】:

好的,所以我的工作就是这样做

哪个有效(除了添加的前三个,因为它们是在运行时添加并且似乎绕过它,但是这不会在实时版本中发生,所以没关系。但是我可以看到这会导致问题删除时,由于 Uid 将被保留,但 DataSource 不会匹配。所以想法?

【讨论】:

以上是关于确定存在于哪个 ListViewItem 复选框的主要内容,如果未能解决你的问题,请参考以下文章

WPF ListViewItem 项目复选框。如何获取所有选定的项目?

如何为每个复选标记保存复选框并增加整数?

如何在没有 QCheckBox 框的情况下绘制本机复选标记

如何检查项目是不是存在于多个数组中

确定是不是使用 jQuery 检查复选框 [重复]

使用 Modal Segue 保留复选标记