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