2011-12-09 75 views
4

我在我的WPF应用程序中创建了一个简单的AutoCompleteBox,它加载的代码拦截了Populate事件,但当列表弹出并且我按下箭头键并到达列表的末尾垂直滚动条不滚动。AutoCompleteComboBox箭头向上/向下箭头键滚动列表

这些值在滚动浏览的字段中不断变化,但滚动条不移动。

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

我只是需要箭头键来滚动它。

任何意见/建议?

我是WPF的新手,并且一直在为此修复搜索。

+0

不是一个答案,但一个建议:你知道,[WPF工具包(http://wpf.codeplex.com/releases/查看/ 40535)有一个漂亮的AutoCompleteBox? – Tod

+0

我正在使用从WPF组件列表中添加的工具箱窗格中的AutoCompleteBox控件.... .........这是你所指的吗? – theDoke

+0

对不起,我不知道为什么,但我想你是在说你推出了自己的AutoCompleteBox。我怀疑他们是一样的。 – Tod

回答

1

我看到相同的行为。我发现一个post on codeplex讨论了一个不同的问题,但是在帖子的底部他们有一个支持ScrollIntoView的AutoCompleteBoxEx类,所以你甚至可以连接SelectionChanged,并且这应该让你得到你想要的行为。我不知道为什么这不是出炉。我有机会测试发布的代码。

更新

刚刚粘贴在后的代码放到一个类,并通过改变AutoCompleteBox到AutoCompleteBoxEx并添加命名空间AutoCompleteBoxEx用它在XAML和它工作得很好。您不必在XAML中指定任何事件,也不需要在后面的代码中添加任何代码。

+0

不错!这确实奏效........我可能会玩弄它,看看我是否可以将Page down和Page up键与它一起玩 – theDoke

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); 
}