我的UWP ScrollViewer
上有一个UserControl
,用于显示超出视口范围的内容。启用了X和Y轴上的滚动以及缩放功能。
我还可以在ScrollViewer.ViewChanged
的事件处理程序中运行代码。该代码旨在保存ScrollViewer
的状态(缩放和偏移),以便以后可以恢复。
问题是ViewChanged
事件异常触发,这在我的代码中引起了问题。 Microsoft's documentation只是说:“发生在滚动和缩放等操作导致视图改变时。”
通过测试,我已经证实,在这种情况下,不会触发任何明确的用户输入。类似地,我通过Visual Studio调试器验证了我自己编写的代码均未明确负责事件触发。
我知道ScrollViewer
控件正在加载时也会触发该事件(我是通过反复试验得知的)。为了解决这个问题,我创建了一个布尔标志(例如IsLoaded
),并将其初始设置为false
。当ScrollViewer.Loaded
事件触发时,我将事件处理程序将该标志设置为true
。然后在ScrollViewer.ViewChanged
的事件处理程序中,我忽略标志为false
的情况。
我认为类似的技术可以在这里工作...但是我无法弄清楚ScrollViewer.ViewChanged
事件为什么被触发。此事件是否由于其他原因或在其他条件下触发?我还可以测试其他条件吗?