我在Listview列中有一个按钮。当我按下按钮时,行不会选择。我找到了一个问题的答案:
<Style TargetType="ListBoxItem">
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="IsSelected" Value="True"></Setter>
</Trigger>
</Style.Triggers>
</Style>
这适用于选择行,但当行失去焦点时,它不会保持选中状态,我需要能够选择多行。
我也试过这个解决方案:
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<EventSetter Event="PreviewGotKeyboardFocus" Handler="SelectCurrentItem"/>
</Style>
</ListView.ItemContainerStyle>
在代码背后:
private void SelectCurrentItem(object sender, KeyboardFocusChangedEventArgs e)
{
ListViewItem item = (ListViewItem) sender;
item.IsSelected = true;
}
这更接近我想要的,但现在这会影响选择多个项目,现在用户必须在另一个项目上点击两次才能选择。
我还尝试使用以下方法重新选择点击处理程序中的行:
ListViewItem selectedRow = ((FrameworkElement)sender).DataContext as ListViewItem;
和
((sender as FrameworkElement).TemplatedParent as ListViewItem).IsSelected = true;
但这些给我一个空错误。对于我做错了什么的任何建议?
由于其他原因,我必须使用Listview,或者我只使用Datagrid,它工作得很好。
答案 0 :(得分:0)
尝试在重新选择行的按钮单击上添加处理程序。