问题描述
http://www.cnblogs.com/bullatus/archive/2013/01/21/2869233.html
应该可以确定是WInRT的问题了,ScrollViewer与Projection在一起导致的。
在我的问题情景下,可以这样解决。
为动画添加结束事件
FloatingFlipOver.Completed -= FloatingFlipOver_Completed;
FloatingFlipOver.Completed += FloatingFlipOver_Completed;
在FloatingFlipOver_Completed内执行
foreach (var sv in FloatingRoot.GetDescendantsOfType<ScrollViewer>())
{
sv.ZoomMode = (ZoomMode)(((int)sv.ZoomMode + 1) % 2);
sv.ZoomMode = (ZoomMode)(((int)sv.ZoomMode + 1) % 2);
}
使用的附加方法的定义
public static class VisualTreeHelperExtensions
{
public static IEnumerable<T> GetDescendantsOfType<T>(this DependencyObject start) where T : DependencyObject
{
return start.GetDescendants().OfType<T>();
}
public static IEnumerable<DependencyObject> GetDescendants(this DependencyObject start)
{
var queue = new Queue<DependencyObject>();
var count = VisualTreeHelper.GetChildrenCount(start);
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(start, i);
yield return child;
queue.Enqueue(child);
}
while (queue.Count > 0)
{
var parent = queue.Dequeue();
var count2 = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < count2; i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
yield return child;
queue.Enqueue(child);
}
}
}
}
浙公网安备 33010602011771号