WPF ListView SelectedItem为null

我有一个Listview,其中有一个复选框作为列之一。 如果我点击实际复选框的任何位置,ListView的SelectedItem将按预期设置为当前选定的行。 另一方面,如果我单击复选框(不先单击该行),则SelectedItem为null或先前单击的行。

谁能帮我吗….

干杯

                             

这很容易,只需处理复选框上的Click事件:

 private void CheckBox_Click(object sender, RoutedEventArgs e) { var cb = sender as CheckBox; var item = cb.DataContext; myListView.SelectedItem = item; } 

您必须解析可视树以获取已选中复选框的索引,并在选中某个复选框时在代码中选择该特定列表框项

您也可能对。。。有兴趣

如何在WPF ListBox中获取已检查的项目?

http://goalbook.wordpress.com/2009/09/05/wpf-checkedlist-control/

Veer建议解析可视树以获取复选框。 事情是我已经有了复选框。 我需要的是包含复选框的listviewitem。 经过进一步的研究,这篇博文指出了我正确的方向。 以下是获取单击复选框的行的listviewitem的代码:

  private void chkbox_Checked(object sender, RoutedEventArgs e) { DependencyObject dep = e.OriginalSource as DependencyObject; while ((dep != null) && !(dep is ListViewItem)) { dep = VisualTreeHelper.GetParent(dep); } if (dep != null) { IMyViewModel vm = DataContext as IMyViewModel; vm.SelectedThing = (MyListItemViewModel)lst.ItemContainerGenerator.ItemFromContainer(dep); vm.DoSomethingCommand.Execute(e.RoutedEvent.Name.ToLower()); } }