这是一些代码:
<components:AnimatedContentControl x:Name="MainContent" Content="{Binding}">
<components:AnimatedContentControl.Triggers>
<EventTrigger RoutedEvent="components:AnimatedContentControl.ContentChanged">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MainContent"
Storyboard.TargetProperty="Height"
Duration="0:0:0.25"
From="0"
To="{Binding ElementName=MainContent, Path=ActualHeight}" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</components:AnimatedContentControl.Triggers>
</components:AnimatedContentControl>
AnimatedContentControl
是我创建的一个类,基于 ContentControl,它ContentChanged
内部有一个路由事件(因为无论出于何种原因,默认情况下ContentControl
s 没有ContentChanged
事件)。
此代码中的目标是将我的应用程序指向的任何内容DataContext
加载到 thisContentControl
中,并在更改数据上下文时显示一个简单的动画,该动画由从零到新内容大小的幻灯片组成(理想情况下,它会从旧内容的高度滑到新内容的高度,但第一步是先)。对于这样一个简单的想法,开发起来非常困难。
我已经知道我的问题是什么:当这个事件触发时, 的Content
属性AnimatedContentControl
已经更新,但由于某种原因, 的ActualSize
没有AnimatedContentControl
(实际上,仔细想想,我可能可以将ActualSize
属性From
用于DoubleAnimation
- 我稍后会尝试) 。
所以我的问题是:有什么我可以绑定到的内容DoubleAnimation
的实际大小AnimatedContentControl
吗?如果是这样,它是什么?如果没有,有哪些解决方法?