尝试在双击事件触发的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);
工作得很好,但遗憾的是它没有动画,这会导致糟糕的用户体验.并不是我想要的.
关于为什么没有发生的任何想法?
另一种解决方案是Task.Delay
在指令之前添加一个调用.
真的很奇怪,但它的确有效.
await Task.Delay(1); scroller.ChangeView(null, null, null, false); // whatever
找到解决方案:http: //social.msdn.microsoft.com/Forums/windowsapps/en-US/c3eac347-fe08-41bd-98cb-d97b6f260873/double-tap-to-zoom-image-windows-81-scrollviewerchangeview?forum = winappswithcsharp
这里标记为解决方案的帖子实际上是有效的,但如果您使用有问题的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);