每次我在 WPF 中加载时如何使 Listbox 的 ScrollViewer 滚动到顶部

Posted

技术标签:

【中文标题】每次我在 WPF 中加载时如何使 Listbox 的 ScrollViewer 滚动到顶部【英文标题】:how to make ScrollViewer of Listbox to scroll to Top every time I Load it in WPF 【发布时间】:2021-10-29 19:59:01 【问题描述】:

我有一个包含图像作为项目的列表框。我们可以选择图像,它将在图像查看器中显示图像。现在的问题是,当我加载它时,scrollViewer 会移动到列表框中先前选择的项目,而不是第一个项目。每次加载时,我需要做什么才能使 Listbox 的 scrollViewer 位于顶部?

【问题讨论】:

【参考方案1】:

您始终可以使用ListBox.ScrollIntoView 将特定项目滚动到视图中:

if (listBox.Items.Count > 0)

  object firstItem = listBox.Items[0];
  listBox.ScrollIntoView(firstItem);

【讨论】:

我们如何访问viewmodel中的列表框数据,因为我们只能使用它们xaml.cs文件,我需要从Viewmodel处理 不,这绝不是视图模型的责任。视图模型只允许选择数据模型,但它通常不知道滚动查看器或数据模型的可视化表示。您最初的问题非常广泛并且缺少关键细节,这就是为什么我只能给您这个广泛的答案 - 广泛的问题只能得到广泛的答案。您基本上必须找到一个视图事件并处理它(并执行上面的代码)。什么活动适合您(例如 ListBox.SelectionChangedImage.Loaded - 我不知道)

以上是关于每次我在 WPF 中加载时如何使 Listbox 的 ScrollViewer 滚动到顶部的主要内容,如果未能解决你的问题,请参考以下文章

Apache Pig - 在猪关系中加载时缺少数字数据

如何使 WPF 数据模板填充列表框的整个宽度?

当视图在iOS中加载时如何在缩放时显示用户当前位置?

使用 gon-wpf 的 ListBox 拖放 - 使选择保持活动状态

当页面在带有nativescript的android应用程序中加载时如何显示键盘?

在 Vue.js 2 组件中加载时未定义 Webpack 外部 JS 文件