我有一个装有物品的silverlight autocompletebox。有谁知道如何突出显示列表中的第一项,以便,如果用户按下回车键,则选择该项目,用户不一定要使用鼠标?
在其他Windows控件中,您可以使用selectedindex = 0;
答案 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();
}
}
}