C# 从XAML到C的WPF故事板#

C# 从XAML到C的WPF故事板#,c#,wpf,xaml,animation,storyboard,C#,Wpf,Xaml,Animation,Storyboard,我有一个自定义的Ticker控件,它可以很好地处理静态值,但要让它处理动态值,我需要在代码中这样做,因为我必须延迟故事板的执行,直到文本块被渲染。 我需要将以下XAML传输到C#中,但它不起作用: <Canvas x:Name="PART_TickerCanvas" Grid.Row="1" Width="128" ClipToBounds="True">

我有一个自定义的Ticker控件,它可以很好地处理静态值,但要让它处理动态值,我需要在代码中这样做,因为我必须延迟故事板的执行,直到文本块被渲染。 我需要将以下XAML传输到C#中,但它不起作用:

<Canvas x:Name="PART_TickerCanvas" Grid.Row="1" Width="128" ClipToBounds="True">
                        <TextBlock x:Name="PART_TickerTextBlock">
                            <TextBlock.Triggers>
                                <EventTrigger RoutedEvent="Loaded">
                                    <BeginStoryboard>
                                        <Storyboard>
                                            <DoubleAnimation
                        Storyboard.TargetName="TickerTranslateTransform"
                        Storyboard.TargetProperty="X"
                        From="{Binding ElementName=TickerCanvas, Path=ActualWidth}" To="{Binding ElementName=PART_TickerTextBlock, Path=RenderSize.Width, Converter={StaticResource TextBlockWidthConverter}}" Duration="0:0:10"
                        RepeatBehavior="Forever"/>
                                        </Storyboard>
                                    </BeginStoryboard>
                                </EventTrigger>
                            </TextBlock.Triggers>
                            <TextBlock.RenderTransform>
                                <TranslateTransform x:Name="TickerTranslateTransform" X="{Binding ElementName=PART_TickerCanvas, Path=ActualWidth}" Y="0" />
                            </TextBlock.RenderTransform>
                        </TextBlock>
                    </Canvas>

我很确定DoubleAnimation在C中是正确的,但后来出现了一些问题。任何帮助都将不胜感激。

您不需要故事板

直接启动
X
属性的动画,如下所示:

_tickerTextBlock.RenderTransform.BeginAnimation(
    TranslateTransform.XProperty, doubleAnimation);

我刚刚添加了_tickerTextBlock.Dispatcher.Invoke(DispatcherPriority.Render,(Action)delegate(){});在文本属性更改时更新文本框。
_tickerTextBlock.RenderTransform.BeginAnimation(
    TranslateTransform.XProperty, doubleAnimation);