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. 以編程方式滾動視圖
- 3. 以編程方式滾動到滾動視圖內的視圖
- 4. 在android中以編程方式滾動列表視圖
- 5. 如何以編程方式在Windows 8.1中滾動視圖?
- 6. 如何以編程方式創建滾動視圖?
- 7. Swift:添加UIScroll視圖以編程方式不滾動視圖
- 8. 如何以編程方式滾動SurfaceScatterView
- 9. 如何以編程方式滾動UIScrollVIew
- 10. 如何以編程方式滾動ScrollView?
- 11. 如何以編程方式滾動TextMergeViewer?
- 12. 如何以編程方式滾動UIScrollView?
- 13. WPF:如何以編程方式從ScrollViewer中提取滾動條?
- 14. 如何以編程方式滾動WPF WebBrowser?
- 15. 如何在WPF中以編程方式滾動網格?
- 16. 如何以編程方式在滾動視圖中嵌入堆棧視圖
- 17. 以編程方式滾動表格視圖並調整滾動時間?
- 18. 如何以編程方式在dockpanel中切換2個列表視圖? [WPF]
- 19. 如何以編程方式在Horizontal中以圖像創建滾動視圖?
- 20. 試圖以編程方式滾動scrollviewer
- 21. 以編程方式滾動JMapViewer地圖
- 22. 以編程方式滾動SWT表
- 23. 以編程方式反應原生滾動到列表視圖項目
- 24. 如何以編程方式在JQM中創建列表視圖
- 25. 如何以編程方式創建列表視圖到網格
- 26. 如何以編程方式設置列表視圖的OrderedView
- 27. WPF以編程方式創建樹視圖itemtemplate /列
- 28. WPF - 列表視圖滾動條問題
- 29. 以編程方式設置滾動視圖上的邊距
- 30. 以編程方式檢測滾動視圖之外的觸摸
對於垂直向下滾動和向上滾動,您都將3添加到「垂直偏移」。這是對的嗎?最後,我們需要減去3,而不是添加。 – Syed 2013-03-01 06:26:21