在Silverlight中将子项从一个面板移动到另一个面板时,如何设置过渡动画

时间:2010-02-02 19:02:01

标签: silverlight

我希望在两个面板之间移动内容时设置转换动画。我得到一个细节记录的地图图像,并将其作为缩略图对接在下面的面板中。停靠区域位于页脚网格中,内容详细信息位于停靠区域上方的另一个网格中(停靠点和主内容区域位于根布局控件的单独行中 - 另一个网格)。

我尝试使用ScaleTransform和TranslateTransform实现此功能,同时缩小图像并将其移向页脚控件。当它移动到页脚控件时,即使图像Canvas.ZIndex属性设置为非常高的数字,它也会被剪裁。最终,thumnbail将需要成为位于页脚网格内的StackPanel的子项。

感谢您的考虑和帮助。

2 个答案:

答案 0 :(得分:2)

我有一个类似的问题(剪辑)我有一个WPF动画。问题是动画的所有者需要成为两个容器的父级才能使动画工作(在我的例子中,我将它作为容纳容器的实际窗口)。

没有任何代码,我无法看出这是不是你的问题,但我想我会把它扔出去。

您可以在此处查看我的代码,其中我将动画从一个容器移动到另一个容器: http://wiassistant.codeplex.com/sourcecontrol/changeset/view/36638?projectName=WIAssistant#924851 (请参阅文件底部的AnimatePaneBox方法。)这可能对您有用,也可能没用。

答案 1 :(得分:1)

我通过创建一个位于两个容器顶部的Canvas来做类似的事情,使用WritableBitmap(如果需要)创建一个正在移动的对象的渲染并将其附加到该Canvas,使其动画化位图(平移,缩放,不透明等),然后在动画结束时弹出新对象。如果您的控件需要能够移动或调整大小,它可能会很脆弱,但在我的大多数情况下,它都是可靠的黑客。