我看到了一些关于此的事情,但我现在已经失去了它,再也找不到了 . 我需要的是知道哪个ListViewItem复选框存在,选中复选框(最终会导致删除),
我试过让父母,但显然这不起作用 .
XAML:
<ListView Name="incomingMessages" Extensions:ListViewColumns.Stretch="true"
Height="226" Canvas.Left="0" Canvas.Top="0" Width="755" ItemsSource="{Binding Messages}">
<ListView.View>
<GridView>
<GridViewColumn Header="Time" Width="100" DisplayMemberBinding="{Binding Time}" />
<GridViewColumn Header="Message" DisplayMemberBinding="{Binding FullMessage}" />
<GridViewColumn Header="Phone Number" DisplayMemberBinding="{Binding Number}" Width="85" />
<GridViewColumn Header="Done" Width="45">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Done}" VerticalAlignment="Center" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
需要在Checked事件中使用哪种代码才能使其正常工作? (作为一个附带问题,为什么我的VerticalAlignment不在中心对齐列中的复选框?)
就像我说的那样,我在这种代码中尝试过父母
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
CheckBox cb = (CheckBox)sender;
object lv = cb.parent;
}
如果我在cb.parent行上断点,则cb.parent为null .
谢谢,Psy
2 回答
好的,我所做的就是做到这一点
这是有效的(除了前三个添加,因为它们是在运行时添加,似乎绕过它,但是在实时版本中不会发生这样就可以 . 但是后来我可以看到这导致问题被删除时,因为Uid将被维护,但DataSource将无法匹配 . 所以想法?
您可以使用
VisualTreeHelper
向上走可视树并找到ListViewItem
. 但是,如果可能的话,我建议不要采用这种方法 . 很可能使用其他WPF功能(如数据绑定)来实现您的目标 .