一直在网上寻找答案,但我还没有找到任何可以做到这一点的东西:
我想以编程方式更改 WPF 列表视图中的确切位置。某种说法
ListView.Scrollposition.Y = some value;
我唯一能找到的就是将值更改为列表视图中的对象,而不是特定的坐标。
如果有人在这个主题上有一些好的文章或帖子,我将不胜感激!
Thanks.
没有办法使用ListView
元素。相反,您需要访问它的ScrollViewer
然后你可以使用ScrollViewer.ScrollToVerticalOffset Method http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer.scrolltoverticaloffset%28v=vs.110%29.aspx设置垂直位置ScrollViewer
。您还需要使用ScrollViewer.VerticalOffset
, ScrollViewer.VerticalOffset
, ScrollViewer.ViewportHeight
and ScrollViewer.ExtentHeight
属性来衡量您所处的位置ScrollViewer
.
来自ScrollViewer Class http://msdn.microsoft.com/en-us/library/system.windows.controls.scrollviewer%28v=vs.110%29.aspxMSDN 页面:
包含 ScrollViewer 的所有内容的区域就是范围。内容的可见区域是视口。
最后,如何获得ScrollViewer
来自ListView
?我不能保证这会在ListView
,但它确实在ListBox
。你可以使用VisualTreeHelper.GetChild Method http://msdn.microsoft.com/en-us/library/system.windows.media.visualtreehelper.getchild%28v=vs.110%29.aspx深入研究视觉树ListView
它应该包含一个Border
然后是ScrollViewer
, 那么你should能够做这样的事情:
Border border = (Border)VisualTreeHelper.GetChild(YourListView, 0);
ScrollViewer scrollViewer = VisualTreeHelper.GetChild(border, 0) as ScrollViewer;
if (scrollViewer != null)
{
scrollViewer.ScrollToVerticalOffset(60.0);
}
If you do得到一个错误GetChild
方法返回后,通过调试就很容易调整。只需在那里放置一个断点,看看每个子类型是什么,然后添加另一行包含这些元素之一......最终,它应该找到ScrollViewer
。不过,我认为该代码应该没问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)