UWP ScrollViewer ViewChanged Стрельба неожиданно - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть ScrollViewer на моем UWP UserControl, для отображения содержимого, которое выходит за границы области просмотра.Прокрутка по осям X и Y включена, как и масштабирование.

У меня также есть код для запуска в обработчике событий для ScrollViewer.ViewChanged.Этот код предназначен для сохранения состояния (масштаб и смещение) ScrollViewer, чтобы его можно было возобновить позднее.

Проблема в том, что событие ViewChanged неожиданно срабатывает, чтовызывая проблемы в моем коде. Документация Microsoft просто гласит: «Происходит, когда манипуляции, такие как прокрутка и масштабирование, приводят к изменению представления.».

По результатам тестирования я убедился, что явный пользовательский ввод не является причинойсобытие запускается в этом случае.Аналогичным образом я проверил через отладчик Visual Studio, что ни один из моего собственного написанного кода не несет явной ответственности за срабатывание события.

Я знаю, что событие также возникает при загрузке элемента управления ScrollViewer (я узнал, чтометодом проб и ошибок).Чтобы обойти это, я создал логический флаг (такой как IsLoaded) и первоначально установил его на false.Когда происходит событие ScrollViewer.Loaded, мой обработчик события установил этот флаг на true.Затем в моем обработчике событий для ScrollViewer.ViewChanged я игнорирую случаи, когда флаг равен false.

Я полагал, что подобная техника может работать здесь ... но я не могу понять, почему происходит событие ScrollViewer.ViewChanged,Это событие происходит по другим причинам или при других условиях?Могу ли я проверить другие условия?

...