确定存在于哪个 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 复选框的主要内容,如果未能解决你的问题,请参考以下文章