C#滚动到列表框的顶部

时间:2011-02-22 20:54:36

标签: c# wpf listbox

我看过很多帖子,展示了如何滚动到ListBox的底部项目,但无法解决如何自动滚动到列表框的顶部。 如果我向下滚动列表框,然后使用我的过滤器功能,列表框将保持在您向下滚动的位置,因此用户可能看不到上面滚动到的位置的结果。

我一直在尝试使用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
            }
        }
    } 
}

非常感谢。

2 个答案:

答案 0 :(得分:25)

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

答案 1 :(得分:0)

ScrollIntoView对我没用,但确实如此:

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

这使用Extended WPF Toolkit来获取ScrollViewer,但您当然可以手动执行此操作,例如this answer