单击按钮行时,WPF LIstview行保持选中状态

时间:2015-03-27 20:02:31

标签: wpf listview

我在Listview列中有一个按钮。为了在按下按钮时选择整行,我使用以下代码:

        private void ButtonClick(object sender, RoutedEventArgs e)
        {
            ListViewItem selectedRow = GetAncestorOfType<ListViewItem>(sender as Button);
            selectedRow.IsSelected = true;
        }

        public T GetAncestorOfType<T>(FrameworkElement child) where T : FrameworkElement
        {
            var parent = VisualTreeHelper.GetParent(child);
            if (parent != null && !(parent is T))
                return (T)GetAncestorOfType<T>((FrameworkElement)parent);
            return (T)parent;
        }

这一切都很好,但如果我单击一行中的按钮,然后单击另一行中的按钮,两行都保持选中状态。我想过每次单击一个按钮时手动取消选择所有行,但是如果按住ctrl,我需要能够选择多行。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在更新选择之前,请尝试在ListView上使用UnselectAll

private void ButtonClick(object sender, RoutedEventArgs e)
{
    myListView.UnselectAll();

    ListViewItem selectedRow = GetAncestorOfType<ListViewItem>(sender as Button);
    selectedRow.IsSelected = true;
}