2011-12-04 78 views
4

第一項我有一個充滿項目一個Silverlight autocompletebox。有誰知道如何突出顯示列表中的第一項,以便如果用戶按下回車鍵,則選擇該項目,並且用戶不一定非得使用鼠標?選擇在autocompletebox的Silverlight

在其他窗口控件,可以使用的selectedIndex = 0;

回答

0

我想你在找什麼是的SelectedItem。如果你是在代碼中完成它,你只需要像autoCompleteControl.SelectedItem = listUsedToPopulate [0];

+1

不幸的是,這是行不通的。當用戶輸入時,只有一個項目出現在列表中 – Sico

2

對於那些有興趣誰,你需要抓住的AutoCompleteBox的孩子ListBox控件參考和使用的SelectedIndex。

2

在XAML設置

IsTextCompletionEnabled = 「真」

0

只是爲了在已經給予很好的答案闡述。

首先,jesse的回答 - 設置爲IsTextCompletionEnabled="True",簡單 - 在每次擊鍵之後,用列表中的第一項填充文本框。當你按下回車鍵時,彈出窗口關閉。我結束了不使用這種方法的原因是,它會立即更新SelectedItem,而無需等待用戶按Enter鍵。

西科的回答是我用什麼。它要求繼承AutoCompleteBox控件以訪問GetTemplateChild方法。代碼如下:

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(); 
     } 
    } 
} 
相關問題