Обнаружение прокрутки GridView WinRT

на WinRT у меня есть gridview. Я хочу выполнить метод, когда будет достигнут конец сетки.

Однако для gridview нет такого метода событий.

Я пытаюсь обнаружить манипуляцию с представлением сетки, но, похоже, средство просмотра прокрутки, включенное в мое представление сетки, перехватывает все события. Как я могу получить этот scrollviewer? И даже после этого, с моим scrollViewer, как я могу узнать позицию этого прокрутки (например,reachedEnd?)

Спасибо


person Rototo    schedule 03.06.2013    source источник
comment
Для чего вам это нужно? Если нужно загружать новые элементы, когда пользователь достигает конца, вместо этого вы должны реализовать в своей коллекции ISupportIncrementalLoading. Если вы сделаете это, сетка будет постепенно и автоматически загружать ваши данные. См. также msdn.microsoft.com/en-us/library/ окна/приложения/hh994637.aspx   -  person chue x    schedule 03.06.2013
comment
поскольку в моем приложении используется кроссплатформенное ядро, я не могу использовать что-то вроде ISupportIncrementalLoading (потому что это зависит от пользовательского интерфейса Windows). Я забыл упомянуть об этом.   -  person Rototo    schedule 04.06.2013


Ответы (1)


Вы можете использовать VisualTreeHelper, чтобы найти потомка GridView типа ScrollViewer, а затем подписаться на его событие ViewChanged. В обработчике событий вы можете определить, где вы находитесь в ScrollViewer. Затем вы должны сравнить ScrollViewer.ScrollableWidth с HorizontalOffset, чтобы узнать, дошли ли вы до конца.

Используйте его, если вы хотите управлять некоторой пользовательской логикой макета/анимации, но используйте ISupportIncrementalLoading, хотя, как предложил chue x, если вы пытаетесь загрузить больше данных.

person Filip Skakun    schedule 03.06.2013
comment
Большое спасибо, проблема в том, что у моего gridview после загрузки есть только 1 ребенок, граница. В Xaml я использую только gridview, но у этого gridview есть прокрутка... кажется, у gridview есть внутренняя прокрутка, и я не могу получить к ней доступ. Наконец, я преуспел в этом, используя это: c Sharp">stackoverflow.com/questions/11830574/ и это работает :-) - person Rototo; 04.06.2013