2011-02-22 12 views
9

ListBox'un en alt öğesinin nasıl kaydırılacağını gösteren birçok ileti görüldü, ancak liste kutusunun en üstüne nasıl otomatik olarak kaydırılacağını belirleyemiyorum. Liste kutumda aşağı kaydırırsam, filtre işlevimi kullanın, liste kutusu aşağı kaydırdığınız konumda kalır, böylece kullanıcı, aşağı kaydırıldıkları yere göre sonuçları göremeyebilir.C# Liste kutusunun üst kısmına kaydır

Liste kutusunu kullanmaya çalışıyorum. ScrollIntoView ancak doğru işlevi alamıyorum. Bu, nerede olacağı bağlamıdır ... (yorumladı kısmı):

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

Çok teşekkürler.

cevap

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

Darn, bana onu döv. –

+0

Teşekkürler, bu nokta üzerinde görünüyor, ama bir sebepten dolayı iş yapmıyor. Hata ya da herhangi bir şey, sadece çalışmıyor ?! Garip. –

+0

Foreach döngüsünün dışında 'ScrollIntoView' çağırıyor musunuz? –

0

ScrollIntoView benim için işe yaramadı, ama bu yaptı:

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

Bu ScrollViewer almak için Extended WPF Toolkit kullanır, ancak elbette bunu elle örn can this answer.

İlgili konular