2011-02-22 4 views
9

J'ai vu beaucoup de messages qui montrent comment faire défiler vers le bas de l'élément d'un ListBox, mais ne peux pas trouver comment faire défiler automatiquement vers le haut de la liste. Si je fais défiler ma liste, puis utilise ma fonction de filtre, la liste restera à la position que vous avez défilée vers le bas, de sorte que l'utilisateur peut ne pas voir les résultats qui sont au-dessus où ils sont descendus. J'ai essayé d'utiliser le listbox.ScrollIntoView mais je ne peux pas obtenir la bonne fonction. c'est le contexte où il serait ... (partie commentée):C# Faire défiler vers le haut de la liste

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

Merci beaucoup.

Répondre

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

Darn, bat-moi à ça. –

+0

Merci, cela semble sur place, mais ce n'est pas le travail pour une raison quelconque. pas d'erreurs ou quoi que ce soit, ne fonctionne pas ?! Impair. –

+0

Appelez-vous 'ScrollIntoView' en dehors de la boucle foreach? –

0

ScrollIntoView ne fonctionne pas pour moi, mais cela:

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

Il utilise le Extended WPF Toolkit pour obtenir le ScrollViewer, mais vous pouvez bien sûr le faire manuellement par exemple this answer.

Questions connexes