这可能听起来很简单,但我找不到办法。
我只想在TextBlock中使用闪烁的文本。有没有办法轻松实现?
我能想到的唯一方法是使用计时器并手动更改TextBlock前景。当然有一种简单的方法可以做到这一点。我只是无法搞清楚。
谢谢!
答案 0 :(得分:9)
您可以在XAML标记中声明Storyboard
动画,该动画会永久闪烁文本:
<TextBlock Text="I'm Blinking!">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Resources>
<Storyboard x:Key="flashAnimation" >
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" AutoReverse="True" Duration="0:0:0.5" RepeatBehavior="Forever" />
</Storyboard>
</Style.Resources>
</Style>
</TextBlock.Style>
</TextBlock>
这是根据我在WPF和WinRT XAML中的经验,但我很确定UWP使用相同的Storyboard
动画。
这是微软在MSDN上的便捷参考:Animations Overview。
希望这有帮助!
答案 1 :(得分:5)
从后面的代码(C#),您可以使用以下代码执行此操作:
Storyboard storyboard = new Storyboard();
storyboard.Duration = new Duration(TimeSpan.FromSeconds(10.0));
DoubleAnimation opacityAnimation = new DoubleAnimation()
{
From = 1.0,
To = 0.0,
BeginTime = TimeSpan.FromSeconds(5.0),
Duration = new Duration(TimeSpan.FromSeconds(5.0))
};
Storyboard.SetTarget(opacityAnimation, txtBlink);
Storyboard.SetTargetProperty(opacityAnimation, "Opacity");
storyboard.Children.Add(opacityAnimation);
storyboard.RepeatBehavior = RepeatBehavior.Forever;
storyboard.AutoReverse = true;
storyboard.Begin();
假设你有一个文本块:
<TextBlock x:Name="txtBlink" FontSize="32">Some text</TextBlock>
答案 2 :(得分:0)
对于闪烁文本,我认为计时器是最简单的方法。 (虽然我知道你有使用计时器和寻找替代的想法,但层实际上应该达到目的) 可能像下面的东西可以帮助你。
Timer timer = new Timer();
public void Blinker()
{
timer.Interval = 500;
timer.Start();
timer.Tick += new EventHandler(timer_tick);
}
void timer_tick(object sender, EventArgs e)
{
if(label3.ForeColor = System.Drawing.Color.Green)
{
label3.ForeColor = System.Drawing.Color.White;
}
else
{
label3.ForeColor = System.Drawing.Color.Green;
}
}
public void StopBlinker()
{
timer.Stop();
}
现在您可以适当调用闪光灯方法以使文字闪烁。