单击按钮行时 WPF LIstview 行保持选中状态
WPF LIstview rows stay selected when button rows clicked
我在列表视图列中有一个按钮。为了在按下按钮时整行变为 select,我使用以下代码:
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;
}
这一切都很好,但如果我单击一行中的按钮,然后单击另一行中的按钮,两行都会保持 selected。我考虑过每次单击按钮时手动删除所有行,但如果按住 ctrl,我确实需要能够 select 多行。有什么建议吗?
在更新选择之前尝试在 ListView
上使用 UnselectAll
:
private void ButtonClick(object sender, RoutedEventArgs e)
{
myListView.UnselectAll();
ListViewItem selectedRow = GetAncestorOfType<ListViewItem>(sender as Button);
selectedRow.IsSelected = true;
}
我在列表视图列中有一个按钮。为了在按下按钮时整行变为 select,我使用以下代码:
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;
}
这一切都很好,但如果我单击一行中的按钮,然后单击另一行中的按钮,两行都会保持 selected。我考虑过每次单击按钮时手动删除所有行,但如果按住 ctrl,我确实需要能够 select 多行。有什么建议吗?
在更新选择之前尝试在 ListView
上使用 UnselectAll
:
private void ButtonClick(object sender, RoutedEventArgs e)
{
myListView.UnselectAll();
ListViewItem selectedRow = GetAncestorOfType<ListViewItem>(sender as Button);
selectedRow.IsSelected = true;
}