尝试在双击事件触发的Windows商店应用中缩小滚动视图。
这是它应该发生的代码
private void MainPhotoDisplay_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
MainPhotoDisplayscrollViewer.ChangeView(null, null, 1.0F,true);
}
但如果我放大,在模拟器中然后双击,则没有任何反应。 事件触发并且方法运行但没有任何反应,视图仍处于放大状态。
这是它的文档:http://msdn.microsoft.com/en-us/library/windows/apps/dn252762.aspx
这个过时的方法:
MainPhotoDisplayscrollViewer.ZoomToFactor(1);
工作正常,但遗憾的是它没有动画,这会导致糟糕的用户体验。并不是我想要的。
关于为什么没有发生的任何想法?
答案 0 :(得分:9)
另一种解决方案是在指令之前添加Task.Delay
调用。
真的很奇怪,但它确实有效。
await Task.Delay(1);
scroller.ChangeView(null, null, null, false); // whatever
答案 1 :(得分:8)
标记为解决方案的帖子实际上有效,但是如果您使用有问题的scrollViewer在页面的代码隐藏中运行代码,则不需要事件的前3行。 记得将调用中的最后一个bool设置为false以显示动画。
var period = TimeSpan.FromMilliseconds(10);
Windows.System.Threading.ThreadPoolTimer.CreateTimer(async (source) =>
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
var Succes = MainPhotoDisplayscrollViewer.ChangeView(null, null, 1.0F, false);
});
}, period);