2014-12-13 2 views
1

Я вообще не могу это исправить. Следующие два метода лишают методы что-то в моем проекте, которые я использую для отладки проблемы.Способ добавления нескольких элементов в ListView, а не один.

У меня есть текстовое поле управления XAML, действующее как поле поиска, и этот метод предназначен для прослушивания, когда пользователь нажимает клавишу возврата для отправки поиска. Когда нажата клавиша возврата, элемент должен быть добавлен в элемент управления ListView, который у меня есть на моей странице.

Ниже приведены две версии метода, первый из которых прослушивает специально для ключа возврата, однако это приводит к ошибке, когда по поисковому термину добавляется TWICE в ListView.

// Adds two items to ListView 
    public void OnSearchKeyPressDown(object sender, KeyRoutedEventArgs e) 
    { 
     ListView termsList = termsListContainer; 
     if (e.Key == Windows.System.VirtualKey.Enter) 
     { 
      termsList.Items.Add(searchTerm.Text); 
     } 
    } 

Нижеприведенная версия - это тест, который прослушивает любой ключ. Это работает правильно и добавляет только один элемент в ListView.

//Adds only one item to ListView 
    public void OnSearchKeyPressDown(object sender, KeyRoutedEventArgs e) 
    { 
     ListView termsList = termsListContainer; 
     termsList.Items.Add(searchTerm.Text); 
    } 

Я не могу за жизнь моей фигуры из того, что в первом способе дублирует элементы добавляются - может кто-то пожалуйста, помогите мне, я уверен, что это будет просто, и я с видом очевидным вещь.

Cheers.

+0

Просто, чтобы добавить дополнительные разъяснения, если изменить ключ, метод прослушивающему к чему-то еще, как «а» он добавляет только один элемент ListView, поэтому это связано с прослушиванием клавиши Enter. – James

+0

Сколько раз первая функция вызывалась при нажатии кнопки ввода? (поставьте в нем точку останова и посмотрите, сколько раз он попал, или добавьте оператор регистрации). – Gjeltema

+0

Спасибо за ваш комментарий, я на самом деле просто добавил ответ, который я нашел в другом месте - не уверен, что это то, что я когда-либо нашел бы сам! Также не уверен, что я должен ответить на свой вопрос: -s – James

ответ

1

Хорошо, мне удалось найти ответ с дальнейшим расследованием - не уверен, что я должен ответить на собственный вопрос или нет, но я нашел его здесь, и это, похоже, ошибка, о которой знает Microsoft.

MSDN Article on Keydown on Enter bug

Вот один из обходных путей, упомянутых в посте:

if (e.Key == Windows.System.VirtualKey.Enter) 
{ 
    if (e.KeyStatus.RepeatCount == 1) 
    { 
     //code you wish to call 
    } 
} 
Смежные вопросы