我制作了一个自定义WPF控件,定期替换其Children集合中的元素。控件继承自Grid,以允许正确拉伸子元素。
FrameworkElement类型有两个DependencyProperties(和相应的属性):CurrentElement
和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>
动画一开始就会出现异常:
路径中的'RenderTransform'属性值 'CurrentElement.RenderTransform。(0)'指向不可变的实例 'System.Windows.Media.TranslateTransform'。