WPF动画想法:翻转页面

7
我需要一个想法来完成以下动画想法。假设我定义了一个视图模型,如下所示:
public interface IMyViewModel
{
   IPage CurrentPage { get; set;}
}

public interface IPage
{
   string Title { get; set; }
   string Description { get; set; }
}

IPage”对象简单来说,就是一张写有标题和描述的纸。当我的视图模型中的IPage对象发生变化时,我想要如下所述的动画效果: animation outline 纸张应该旋转180°。在旋转90°时,我需要更新显示的内容。
我的视图模型是否支持这种效果?有没有任何适用于此的好的WPF技巧?

1
这不是你在视图模型中要做的事情,而是在视图中要做的事情。此页面提供示例代码,演示如何在XAML中进行梯形变换。然后您需要有两个这样的重叠,使用触发器驱动它们的可见性。在EnterAction中,当它们变得可见时,您可以将AxisAngleRotation3D.Angle属性从180度旋转到0度;在ExitAction中,您可以相反地旋转。然后你必须... - 15ee8f99-57ff-4f92-890c-b56153
同步所有这些东西。我不会碰它,但是它是可行的。也许我完全错误地考虑了机制。但从50,000英尺高空来看,Viewport3D可以为您提供所需的几何变换,并且触发器和DoubleAnimation可以对其进行动画处理。也许您想要使用VisualState而不是触发器。 - 15ee8f99-57ff-4f92-890c-b56153
这是一个有趣的类。我认为难点在于如何在翻转90°之前延迟同步并仍然保持平滑动画。也许我可以在动画开始之前以某种方式将新的 IPage 与3D对象的背面同步,并对其进行旋转。 - Yggdrasil
1个回答

7
有点老但还算很酷的是:Avalon病人监测。你可能想看一下Rotater3DTransition.xamlFlipper3DTransition.xamlenter image description here

这给了我一个想法,在动画之前如何进行同步。在 Flipper3DTransition 中,他们在开始动画之前设置平面的背面。 - Yggdrasil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接