我看过很多帖子,展示了如何滚动到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
}
}
}
}
非常感谢。
答案 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