2011-12-09 205 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); 
}