选择autocompletebox silverlight中的第一项

时间:2011-12-04 17:37:56

标签: silverlight

我有一个装有物品的silverlight autocompletebox。有谁知道如何突出显示列表中的第一项,以便,如果用户按下回车键,则选择该项目,用户不一定要使用鼠标?

在其他Windows控件中,您可以使用selectedindex = 0;

4 个答案:

答案 0 :(得分:2)

对于那些感兴趣的人,您需要获取对AutoCompleteBox的子ListBox控件的引用,并对其使用SelectedIndex。

答案 1 :(得分:2)

在XAML集中

IsTextCompletionEnabled = “真”

答案 2 :(得分:0)

我认为您正在寻找的是SelectedItem。如果你在代码中这样做,你只需要像autoCompleteControl.SelectedItem = listUsedToPopulate [0];

这样的东西。

答案 3 :(得分:0)

只是详细说明已经给出的好答案。

首先,jesse的答案 - 设置IsTextCompletionEnabled="True",简单 - 在每次击键后,使用列表中的第一项填充文本框。当您按Enter键时,弹出窗口将关闭。我最终没有使用这种方法的原因是它立即更新了SelectedItem,而没有等待用户按下回车。

Sico的回答是我用过的。它需要对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();
        }
    }
}