我制作了一个自定义 WPF 控件,它定期替换其 Children 集合中的元素。该控件继承自 Grid,以允许正确拉伸子元素。
有两个类型为 FrameworkElement:CurrentElement
和的 DependencyProperties(和相应的属性) NextElement
。每次 DispatcherTimer 计时,CurrentElement 被 NextElement 替换,并且 NextElement 被分配一个新元素,该元素被添加到 Children 集合中。它还引发了一个事件,我想在其中为两个元素设置动画以获得良好的过渡。
编辑:我已经编辑了我的问题,我在动画没有做任何事情时遇到的最初问题是由我的实现中的其他东西引起的。我现在有另一个问题。
我的动画 XAML 如下所示:
<DoubleAnimation Storyboard.TargetProperty="CurrentElement.RenderTransform.(TranslateTransform.X)"
From="0" To="-1000" Duration="0:0:1" />
只要我在元素本身上定义 RenderTransform 就可以了。但是,理想情况下,我希望将 RenderTransform 设置为以下样式:
<Style TargetType="{x:Type DockPanel}" x:Key="Gallery.Item">
<Setter Property="RenderTransform">
<Setter.Value>
<TranslateTransform X="0" />
</Setter.Value>
</Setter>
</Style>
这会在动画开始后立即导致异常:
路径“CurrentElement.RenderTransform.(0)”中的“RenderTransform”属性值指向“System.Windows.Media.TranslateTransform”的不可变实例。