2011-12-04 2 views
4

У меня есть автозаполнение, которое заполнено элементами. Кто-нибудь знает, как выделить первый элемент в списке, чтобы, если пользователь нажимает кнопку ввода, элемент выбирается, и пользователь не обязательно должен использовать мышь?Выбор первого элемента в autocompletebox silverlight

В других элементах управления Windows вы можете использовать selectedindex = 0;

ответ

0

Я думаю, что вы ищете SelectedItem. Если вы делаете это в коде, вам просто нужно что-то вроде autoCompleteControl.SelectedItem = listUsedToPopulate [0];

+1

К сожалению, это не работает. Только один элемент отображается в списке, когда пользователь вводит – Sico

2

Для тех, кто заинтересован, вам необходимо получить ссылку на дочерний элемент управления ListBox для AutoCompleteBox и использовать SelectedIndex.

2

В XAML установить

IsTextCompletionEnabled = "True"

0

Просто разработать на хорошие ответы уже даны.

Во-первых, ответ jesse - set IsTextCompletionEnabled="True", простой - заполняет текстовое поле после каждого нажатия клавиши с первым элементом в списке. Когда вы нажимаете кнопку ввода, всплывающее окно закрывается. Причина, по которой я не использовал этот подход, заключается в том, что он немедленно обновляет SelectedItem, не дожидаясь, пока пользователь нажмет клавишу ввода.

Ответ Сико - это то, что я использовал. Для доступа к методу GetTemplateChild требуется подклассификация элемента управления AutoCompleteBox. Вот код:

public class ExtendedAutoCompleteBox : AutoCompleteBox 
{ 
    protected override void OnKeyDown(KeyEventArgs e) 
    { 
     if (e.Key == Key.Enter) 
     { 
      UpdateSelection(); 
     } 
    } 

    private void UpdateSelection() 
    { 
     // get the source of the ListBox control inside the template 
     var enumerator = ((Selector)GetTemplateChild("Selector")).ItemsSource.GetEnumerator(); 

     // update Selecteditem with the first item in the list 
     enumerator.Reset(); 
     if (enumerator.MoveNext()) 
     { 
      var item = enumerator.Current; 
      SelectedItem = item; 

      // close the popup, highlight the text 
      IsDropDownOpen = false; 
      (TextBox)GetTemplateChild("Text").SelectAll(); 
     } 
    } 
} 
Смежные вопросы