0
A
回答
1
您需要訪問GridView模板中的ScrollViewer,以便將監聽器添加到其ViewChanged
事件中。
你應該始終有一個輔助方法,在你的武器庫搜索可視化樹的控制,是這樣的:
public static class ViewHelper
{
public static IEnumerable<DependencyObject> ChildrenBreadthFirst(this DependencyObject obj, bool includeSelf = false)
{
if (includeSelf)
{
yield return obj;
}
var queue = new Queue<DependencyObject>();
queue.Enqueue(obj);
while (queue.Count > 0)
{
obj = queue.Dequeue();
var count = VisualTreeHelper.GetChildrenCount(obj);
for (var i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(obj, i);
yield return child;
queue.Enqueue(child);
}
}
}
}
現在,您可以訪問的ScrollViewer像這樣(簡化代碼):
<Page Loaded="onPageLoaded">
<GridView x:Name="gridView"/>
</Page>
private void onPageLoaded(object sender, RoutedEventArgs e)
{
var scrollViewer = gridView.ChildrenBreadthFirst().OfType<ScrollViewer>().First();
scrollViewer.ViewChanged += onViewChanged;
}
private void onViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
System.Diagnostics.Debug.WriteLine("Scrolled");
}
您必須等到Loaded
EV通過模板實現ScrollViewer(Page.Loaded
或GridView.Loaded
可以完成),我通常只需使用Page.Loaded
即可)。
如果您需要跨多個控件執行此操作,則可能需要將其捆綁爲可重用行爲。
相關問題
- 1. 在gtk中捕獲滾動事件#
- 2. 如何爲ojlistview捕獲「滾動」事件
- 3. 如何在Windows窗體中捕獲滾動事件PropertyGrid
- 4. 在iFrame中嵌套的框架中捕獲滾動事件
- 5. GridView水平滾動(UWP)
- 6. div上的捕獲滾動事件
- 7. 如何在flex中捕獲鼠標滾輪單擊事件?
- 8. 如何在滾動條出現時捕獲事件?
- 9. 如何在iPhone/Android上捕獲滾動開始事件
- 10. 捕獲所有滾動事件
- 11. 如何在ListView中捕獲事件?
- 12. 如何在Firebug中捕獲DOM事件?
- 13. 如何在WebView中捕獲mouseDown事件?
- 14. 捕獲滾輪事件
- 15. 如何捕獲菜單項上的gtk滾動事件
- 16. 在活動中捕獲系統事件
- 17. 如何捕捉CListCtrl中的滾動事件?
- 18. 如何捕捉wxGTK中的滾動事件?
- 19. 如何捕獲IE8中的resize事件
- 20. 如何在Dashcode小部件中捕獲鼠標拖動事件?
- 21. UWP中的GridView
- 22. 在gridview中滾動
- 23. 如何捕獲Gridview中ModalPopupExtender擴展器中的DropDownList的SelectedIndexChange事件?
- 24. 在ngTable中捕獲事件
- 25. UWP WebView抓取滾動事件
- 26. UWP GridView滾動直到點擊
- 27. UWP GridView垂直滾動不起作用
- 28. 如何在Android中禁用GridView滾動?
- 29. 如何在dexexpress gridview中啓用滾動
- 30. 如何在Android中動態添加布局捕獲事件
謝謝!它有幫助。 – user5979