AutoCompleteComboBox向上箭头/向下箭头键滚动列表

时间:2011-12-09 04:15:20

标签: c# wpf drop-down-menu scrollbar autocompletebox

我在我的AutoCompleteBox应用中创建了一个简单的WPF,它加载了很好的拦截Populate事件的代码,但是当列表弹出并按下箭头键并到达结束时垂直滚动条不滚动的列表。

值在字段中不断变化,就像滚动它们一样,但滚动条不会移动。

如果我使用鼠标它滚动很好。

我只需要使用箭头键滚动它。

有任何想法/建议吗?

我是WPF的新手并且已经永远搜索了此修复程序。

2 个答案:

答案 0 :(得分:2)

附加一个SelectionChanged事件,然后在处理程序中附加:

private void AutoCompleteBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    AutoCompleteBox box = (AutoCompleteBox)sender;
    ListBox innerListBox = (ListBox) box.Template.FindName("Selector", box);
    innerListBox.ScrollIntoView(innerListBox.SelectedItem);
}

答案 1 :(得分:1)

我看到了同样的行为。我发现post on codeplex谈论了一个不同的问题但是在帖子的底部他们有一个支持ScrollIntoView的AutoCompleteBoxEx类,所以你可以连接SelectionChanged,这样可以得到你想要的行为。我不知道为什么没有这样做。我有机会测试发布的代码。

<强>更新

只需将帖子中的代码粘贴到一个类中,然后通过将AutoCompleteBox更改为AutoCompleteBoxEx并为AutoCompleteBoxEx添加命名空间在XAML中使用它,它就可以正常工作。您不必在XAML中指定任何事件,也不需要向后面的代码添加任何代码。