如果值低于阈值,我正在使用事件处理程序检查每秒。如果是,它将标签文本显示为红色。我想让这个标签闪现。我可以使用故事板,但这将写在xaml部分和固定的类型。有没有办法让标签在MainWindow部分写的代码上闪烁?
public MainWindow()
{
InitializeComponent();
CalculateEvent += CPUHandler;
}
void Handler(object sender, MyEventArgs args)
{
if (args.TotalSum < 5000)
{
label11.Foreground = Brushes.Red;
}
else
{
label11.Foreground = Brushes.White;
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
您不需要故事板。只需将(可修改的)SolidColorBrush分配给Label的Foreground
,然后在其ColorAnimation
属性上启动Color
:
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);
您当然可以使用动画的属性,例如Duration
,AutoReverse
和RepeatBehaviour
,以获得所需的闪烁效果。
如果直接在XAML中指定SolidColorBrush,请执行以下操作:
<Label x:Name="label" ...>
<Label.Foreground>
<SolidColorBrush Color="White"/>
</Label.Foreground>
</Label>
您无需在代码中检查它:
label.Foreground.BeginAnimation(SolidColorBrush.ColorProperty,
new ColorAnimation
{
To = Colors.Red,
Duration = TimeSpan.FromSeconds(0.1),
AutoReverse = true,
RepeatBehavior = new RepeatBehavior(3)
});