У меня есть кнопка в столбце Listview. Когда я нажимаю кнопку, строка не выбирается. Я нашел один ответ на проблему с помощью:Кнопка просмотра списка WPF, выбрав пункт
<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, который отлично работает.
Пробовал это тоже, добавил мой код выше. – mikeminer
использовать 'VisualTreeHelper', чтобы найти' ListViewItem' в визуальном дереве – igorushi
возможно установить свойство Focusable кнопки? – bigworld12