Ess*_*sah 4 c# scrollviewer windows-store-apps
尝试在双击事件触发的Windows应用商店应用中缩小滚动视图.
这是它应该发生的代码
private void MainPhotoDisplay_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
{
MainPhotoDisplayscrollViewer.ChangeView(null, null, 1.0F,true);
}
Run Code Online (Sandbox Code Playgroud)
但如果我放大,在模拟器中,然后双击,没有任何反应.事件触发并且方法运行但没有任何反应,视图仍然处于放大状态.
这是它的文档:http://msdn.microsoft.com/en-us/library/windows/apps/dn252762.aspx
这个过时的方法:
MainPhotoDisplayscrollViewer.ZoomToFactor(1);
Run Code Online (Sandbox Code Playgroud)
工作得很好,但遗憾的是它没有动画,这会导致糟糕的用户体验.并不是我想要的.
关于为什么没有发生的任何想法?
另一种解决方案是Task.Delay在指令之前添加一个调用.
真的很奇怪,但它的确有效.
await Task.Delay(1);
scroller.ChangeView(null, null, null, false); // whatever
Run Code Online (Sandbox Code Playgroud)
找到解决方案: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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4327 次 |
| 最近记录: |