16
A
回答
27
是的,你必须从ListView中抓取ScrollViwer,或者一旦你有权访问它,你可以使用它暴露的方法或重写滚动。您还可以通过获取主要内容区域并使用其界面的实现进行滚动。
这里有一个小帮手,得到的东西就像一个列表框,ListView中ScrollViwer组件等
public static DependencyObject GetScrollViewer(DependencyObject o)
{
// Return the DependencyObject if it is a ScrollViewer
if (o is ScrollViewer)
{ return o; }
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(o); i++)
{
var child = VisualTreeHelper.GetChild(o, i);
var result = GetScrollViewer(child);
if (result == null)
{
continue;
}
else
{
return result;
}
}
return null;
}
然后你可以使用.LineUp()和.LineDown()这样的:
private void OnScrollUp(object sender, RoutedEventArgs e)
{
var scrollViwer = GetScrollViewer(uiListView) as ScrollViewer;
if (scrollViwer != null)
{
// Logical Scrolling by Item
// scrollViwer.LineUp();
// Physical Scrolling by Offset
scrollViwer.ScrollToVerticalOffset(scrollViwer.VerticalOffset + 3);
}
}
private void OnScrollDown(object sender, RoutedEventArgs e)
{
var scrollViwer = GetScrollViewer(uiListView) as ScrollViewer;
if (scrollViwer != null)
{
// Logical Scrolling by Item
// scrollViwer.LineDown();
// Physical Scrolling by Offset
scrollViwer.ScrollToVerticalOffset(scrollViwer.VerticalOffset + 3);
}
}
<DockPanel>
<Button DockPanel.Dock="Top"
Content="Scroll Up"
Click="OnScrollUp" />
<Button DockPanel.Dock="Bottom"
Content="Scroll Down"
Click="OnScrollDown" />
<ListView x:Name="uiListView">
<!-- Content -->
</ListView>
</DockPanel>
通过LineUp和LineDown暴露的逻辑滚动仍然按项目滚动,如果您想滚动一定数量,则应使用上面使用的ScrollToHorizontal/VerticalOffset。如果您还想要更复杂的滚动,请查看我在other question中提供的答案。
3
你试过ScrollIntoView? 或者,如果它不是您放入视图中的特定项目,而是距当前位置的偏移量,则可以使用BringIntoView。
+0
谢谢不,没有看到那些。 – 2009-06-17 19:46:39
相关问题
- 1. 以编程方式滚动视图
- 2. 如何以编程方式在Windows 8.1中滚动视图?
- 3. Swift:添加UIScroll视图以编程方式不滚动视图
- 4. 以编程方式滚动表格视图并调整滚动时间?
- 5. 如何以编程方式滚动ScrollView?
- 6. 如何以编程方式滚动SurfaceScatterView
- 7. 如何以编程方式滚动TextMergeViewer?
- 8. 如何以编程方式滚动UIScrollView?
- 9. 如何以编程方式在滚动视图中嵌入堆栈视图
- 10. WPF:如何以编程方式从ScrollViewer中提取滚动条?
- 11. 如何以编程方式在dockpanel中切换2个列表视图? [WPF]
- 12. 试图以编程方式滚动scrollviewer
- 13. 以编程方式滚动SWT表
- 14. 如何以编程方式设置列表视图的OrderedView
- 15. WPF以编程方式创建树视图itemtemplate /列
- 16. WPF - 列表视图滚动条问题
- 17. 以编程方式滚动到android的最后一个视图
- 18. 以编程方式滚动收集视图
- 19. 以编程方式设置滚动视图上的边距
- 20. 以编程方式将EditText范围滚动到视图中
- 21. 无法以编程方式创建Android滚动视图。
- 22. 以编程方式拖动视图
- 23. 表视图:setEditing以编程方式
- 24. 如何区分以编程方式滚动列表视图和手动这样做?
- 25. 如何以编程方式在wpf datagrid列中显示图像?
- 26. 以编程方式添加视图(线性)布局(即滚动视图内)
- 27. 以编程方式将列添加到Sharepoint列表视图
- 28. 以编程方式滚动Silverlight列表框
- 29. 以编程方式将一个Datagrid列放入视图中(水平滚动)
- 30. 以编程方式skinning滚动flex列表组件的idicator滚动
对于垂直向下滚动和向上滚动,您都将3添加到“垂直偏移”。这是对的吗?最后,我们需要减去3,而不是添加。 – Syed 2013-03-01 06:26:21