2015-03-26 2 views
2

У меня есть кнопка в столбце 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, который отлично работает.

ответ

0

Попробуйте добавить обработчик на кнопку, которая переизбирает строку.

+0

Пробовал это тоже, добавил мой код выше. – mikeminer

+1

использовать 'VisualTreeHelper', чтобы найти' ListViewItem' в визуальном дереве – igorushi

+0

возможно установить свойство Focusable кнопки? – bigworld12

Смежные вопросы