有人可以帮我吗? 我试图做的是,在我的文本块上随机引用淡入淡出。 我试图使用名为" FadeInThemeAnimation"的东西。 问题是我不知道如何让它无休止地工作,所以我的随机引用会在设置完成后出现并消失。我已经在xaml中测试了十几个属性,看看会发生什么,但似乎我不知道该怎么做。目前,报价出现在文本块中(没有任何淡入效果)并慢慢消失,就是这样。请,我该如何使它工作。我已经粘贴了一大堆xaml代码。
<TextBlock x:Name="FamousQuoteTextBlock" Grid.Row="4" HorizontalAlignment="Stretch" Margin="5,5,5,5"
FontSize="15" TextAlignment="Justify" TextWrapping="Wrap" VerticalAlignment="Stretch"
Loaded="FamousQuoteTextBlock_Loaded"
FontFamily="Edwardian Script ITC"
DataContext="{Binding quote}"
Text="{Binding RandomQuote,Mode=TwoWay}"
/>
<StackPanel>
<StackPanel.Resources>
<Storyboard x:Name="EnterStoryboard">
<FadeInThemeAnimation Storyboard.TargetName="FamousQuoteTextBlock"/>
</Storyboard>
<Storyboard x:Name="ExitStoryboard">
<FadeOutThemeAnimation Storyboard.TargetName="FamousQuoteTextBlock"/>
</Storyboard>
</StackPanel.Resources>
</StackPanel>
我尝试过使用speedratio,duratio等等来看看会发生什么,但它没有任何区别:(
我的C#代码背后:
private void FamousQuoteTextBlock_Loaded(object sender, RoutedEventArgs e)
{
Delay(sender, e);
}
private async void Delay(object sender, RoutedEventArgs e)
{
await System.Threading.Tasks.Task.Delay(TimeSpan.FromSeconds(3));
generator_Tick(this, e);
DispatcherTimer generator = new DispatcherTimer();
generator.Tick += generator_Tick;
generator.Interval = TimeSpan.FromSeconds(5);
generator.Start();
}
private void generator_Tick(object sender, object e)
{
Quote quote = new Quote();
FamousQuoteTextBlock.DataContext = quote;
quote.GenerateQuote();
}
答案 0 :(得分:1)
您可以像这样创建自己的动画:
<TextBlock x:Name="QuoteTextBlock" Text="My Quote here">
<TextBlock.Resources>
<Storyboard x:Key="FadeStoryboard">
<DoubleAnimation From="1" To="0.1" Storyboard.TargetProperty="Opacity"
Storyboard.TargetName="QuoteTextBlock"
RepeatBehavior="Forever" AutoReverse="True">
<DoubleAnimation.EasingFunction>
<CubicEase/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</TextBlock.Resources>
</TextBlock>
然后就这样开始:
var storyboard = QuoteTextBlock.Resources["FadeStoryboard"] as Storyboard;
if (storyboard != null)
{
storyboard.Begin();
}
你正在寻找的小技巧是AutoReverse
,这意味着在动画执行后,反向动画将跟进。如果与RepeatBehaviour="Forever"
结合使用,则可能会达到您想要的效果。
我添加了Ease
。您可以自定义缓动功能。这意味着动画步骤不会以线性方式执行,但在这种情况下将是 cubic 。
一些链接可以为您提供有关此事的更多详细信息: