gpt4 book ai didi

c# - 更改 ListView 中的确切滚动位置

转载 作者:行者123 更新时间:2023-11-30 13:31:25 26 4
gpt4 key购买 nike

一直在网上搜索答案,但我还没有找到任何可以做到这一点的东西:

我想以编程方式更改 WPF ListView 中的确切位置。一些说法

ListView.Scrollposition.Y = some value;

我唯一能找到的是将值更改为 Listview 中的对象,而不是特定坐标。如果有人在这个主题上有一些好的文章或帖子,我将不胜感激!

谢谢。

最佳答案

使用 ListView 元素无法做到这一点。相反,您需要访问它的 ScrollViewer 然后您可以使用 ScrollViewer.ScrollToVerticalOffset Method设置 ScrollViewer 的垂直位置。您还需要使用 ScrollViewer.VerticalOffsetScrollViewer.VerticalOffsetScrollViewer.ViewportHeightScrollViewer.ExtentHeight 用于衡量您在 ScrollViewer 中所处位置的属性。

来自ScrollViewer Class MSDN 上的页面:

The area that includes all of the content of the ScrollViewer is the extent. The visible area of the content is the viewport.

最后,如何从 ListView 中获取 ScrollViewer?我不能保证这会在 ListView 上工作,但它会在 ListBox 上工作。你可以使用VisualTreeHelper.GetChild Method深入研究 ListView 的可视化树,它应该包含一个 Border,然后是 ScrollViewer,所以您应该 能够做这样的事情:

Border border = (Border)VisualTreeHelper.GetChild(YourListView, 0);
ScrollViewer scrollViewer = VisualTreeHelper.GetChild(border, 0) as ScrollViewer;
if (scrollViewer != null)
{
scrollViewer.ScrollToVerticalOffset(60.0);
}

如果您确实GetChild 方法返回的内容中遇到错误,可以通过调试轻松调整。只需在此处放置一个断点并查看每个子类型是什么,然后添加包含这些元素之一的另一行...最终,它应该会找到 ScrollViewer。但是,我认为该代码应该没问题。

关于c# - 更改 ListView 中的确切滚动位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21442567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com