【问题标题】:C# Scroll to top of listboxC# 滚动到列表框顶部
【发布时间】:2020-01-17 01:35:40
【问题描述】:

我看到很多帖子显示如何滚动到列表框的底部项目,但不知道如何自动滚动到列表框的顶部。 如果我向下滚动列表框,然后使用我的过滤功能,列表框将停留在您向下滚动到的位置,因此用户可能看不到他们向下滚动到的位置上方的结果。

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

非常感谢。

【问题讨论】:

    标签: c# wpf listbox


    【解决方案1】:
    if(results.Items.Count > 0)
        results.ScrollIntoView(results.Items[0]);
    

    【讨论】:

    • 谢谢,这似乎是正确的,但由于某种原因它没有完成这项工作。没有错误或任何东西,只是无法正常工作?!奇数。
    • 你是在 foreach 循环之外调用ScrollIntoView 吗?
    • 是的。如果我摆脱了所有的 XML 和列表框填充代码,并且只在方法中添加了您的行,它会将 lsitbox 返回到应有的顶部。
    • 好的,我把你的行放在我方法的第一行,它工作正常。非常感谢!
    • @BalaR 简单有效的答案。 +1
    【解决方案2】:

    ScrollIntoView 对我不起作用,但这样做:

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 2013-01-25
      • 2011-11-08
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多