WPF Listview按钮选择项目

时间:2015-03-26 17:06:24

标签: wpf listview

我在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,它工作得很好。

1 个答案:

答案 0 :(得分:0)

尝试在重新选择行的按钮单击上添加处理程序。