2011-02-22 94 views
9

我見過很多帖子顯示如何滾動到ListBox的底部項目,但無法自動滾動到列表框的頂部。 如果我向下滾動我的列表框,然後使用我的過濾器函數,那麼列表框將停留在您向下滾動的位置,因此用戶可能看不到滾動到的位置以上的結果。C#滾動到列表框頂部

我一直在嘗試使用listbox.ScrollIntoView,但無法獲得正確的功能。這是它會在哪裏的背景...(評論部分):

private void filter_Click(object sender, RoutedEventArgs e) 
{ 
    string filterString = textBox1.Text; 
    XElement _xml = XElement.Load("1/1.xml"); 
    { 
     results.Items.Clear(); 
     foreach (XElement value in _xml.Elements("Operators").Elements("Operator")) 
     { 
      1Item _item = new 1Item(); 
      _item.TradingName = value.Element("TradingName").Value; 

      if (_item.Town.IndexOf(filterString, 0, StringComparison.CurrentCultureIgnoreCase) != -1) 
      { 
       results.Items.Add(_item); 
       // add scroll function here 
      } 
     } 
    } 
} 

非常感謝。

回答

22
if(results.Items.Count > 0) 
    results.ScrollIntoView(results.Items[0]); 
+0

該死,打我吧。 – 2011-02-22 21:03:28

+0

謝謝,這似乎是現貨,但由於某種原因它沒有完成這項工作。沒有錯誤或任何東西,只是沒有運作?!奇。 – 2011-02-22 21:19:13

+0

你是否在foreach循環之外調用'ScrollIntoView'? – 2011-02-22 21:22:45

0

ScrollIntoView並沒有爲我工作,但這並:

VisualTreeHelperEx.FindDescendantByType<ScrollViewer>(YourListView)?.ScrollToTop(); 

它使用Extended WPF Toolkit得到的ScrollViewer,但你當然可以做手工例如this answer