У меня есть ScrollViewer
на моем UWP UserControl
, для отображения содержимого, которое выходит за границы области просмотра.Прокрутка по осям X и Y включена, как и масштабирование.
У меня также есть код для запуска в обработчике событий для ScrollViewer.ViewChanged
.Этот код предназначен для сохранения состояния (масштаб и смещение) ScrollViewer
, чтобы его можно было возобновить позднее.
Проблема в том, что событие ViewChanged
неожиданно срабатывает, чтовызывая проблемы в моем коде. Документация Microsoft просто гласит: «Происходит, когда манипуляции, такие как прокрутка и масштабирование, приводят к изменению представления.».
По результатам тестирования я убедился, что явный пользовательский ввод не является причинойсобытие запускается в этом случае.Аналогичным образом я проверил через отладчик Visual Studio, что ни один из моего собственного написанного кода не несет явной ответственности за срабатывание события.
Я знаю, что событие также возникает при загрузке элемента управления ScrollViewer
(я узнал, чтометодом проб и ошибок).Чтобы обойти это, я создал логический флаг (такой как IsLoaded
) и первоначально установил его на false
.Когда происходит событие ScrollViewer.Loaded
, мой обработчик события установил этот флаг на true
.Затем в моем обработчике событий для ScrollViewer.ViewChanged
я игнорирую случаи, когда флаг равен false
.
Я полагал, что подобная техника может работать здесь ... но я не могу понять, почему происходит событие ScrollViewer.ViewChanged
,Это событие происходит по другим причинам или при других условиях?Могу ли я проверить другие условия?