我看过很多帖子,展示了如何滚动到列表框的底部项目,但无法弄清楚如何自动滚动到列表框的顶部。 如果我向下滚动列表框,然后使用我的过滤功能,列表框将停留在您向下滚动到的位置,因此用户可能看不到向下滚动到的上方的结果。
我一直在尝试使用 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
}
}
}
}
非常感谢。
if(results.Items.Count > 0)
results.ScrollIntoView(results.Items[0]);
一个重要的注意事项是,如果您从另一个线程或组件调用 ScrollIntoView,则还需要调用调度程序:
public async Task ScrollToTop()
{
await this.Dispatcher.BeginInvoke(() => {
if (lstRecords.Items.Count > 0)
lstRecords.ScrollIntoView(lstRecords.Items[0]);
});
}