C# 将动画标记为代码而不是故事板
我正在使用事件处理程序每秒检查值是否低于阈值。如果是,它将以红色显示标签文本。我想让这个标签闪光。我可以使用一个故事板,但它会写在xaml部分,并且有点固定。是否有办法使标签在主窗口部分写入的代码上闪烁C# 将动画标记为代码而不是故事板,c#,wpf,xaml,C#,Wpf,Xaml,我正在使用事件处理程序每秒检查值是否低于阈值。如果是,它将以红色显示标签文本。我想让这个标签闪光。我可以使用一个故事板,但它会写在xaml部分,并且有点固定。是否有办法使标签在主窗口部分写入的代码上闪烁 public MainWindow() { InitializeComponent(); CalculateEvent += CPUHandler; } void Handler(object sender, MyEventArgs args) { if (args.T
public MainWindow()
{
InitializeComponent();
CalculateEvent += CPUHandler;
}
void Handler(object sender, MyEventArgs args)
{
if (args.TotalSum < 5000)
{
label11.Foreground = Brushes.Red;
}
else
{
label11.Foreground = Brushes.White;
}
}
public主窗口()
{
初始化组件();
CalculateEvent+=CPUHandler;
}
无效处理程序(对象发送方,MyEventArgs参数)
{
如果(参数总和<5000)
{
标签11.前景=画笔.红色;
}
其他的
{
标签11。前景=画笔。白色;
}
}
您知道xaml部分中的标记也只是csharp类吗
当然你可以使用故事板类!符号只是有点不同
你不需要故事板。只需将(可修改的)SolidColorBrush指定给标签的
前景
,并在其颜色
属性上启动彩色动画
:
var colorAnimation = new ColorAnimation
{
To = Colors.Red,
Duration = TimeSpan.FromSeconds(0.1),
AutoReverse = true,
RepeatBehavior = new RepeatBehavior(3)
};
var foreground = label.Foreground as SolidColorBrush;
if (foreground == null || foreground.IsFrozen)
{
foreground = new SolidColorBrush(Colors.White);
label.Foreground = foreground;
}
foreground.BeginAnimation(SolidColorBrush.ColorProperty, colorAnimation);
当然,为了获得所需的闪烁效果,您可能必须使用动画的属性,如持续时间
、自动翻转
和重复行为
如果直接在XAML中指定SolidColorBrush,如下所示:
<Label x:Name="label" ...>
<Label.Foreground>
<SolidColorBrush Color="White"/>
</Label.Foreground>
</Label>
似乎符号有点不同。正在搜索。是的。但您会看到,它们都只是具有属性的类。顺便说一下,它们在xaml:)中称为标记和属性。也许您可以将故事板放在应用程序的资源中。然后在代码中检索它。
label.Foreground.BeginAnimation(SolidColorBrush.ColorProperty,
new ColorAnimation
{
To = Colors.Red,
Duration = TimeSpan.FromSeconds(0.1),
AutoReverse = true,
RepeatBehavior = new RepeatBehavior(3)
});