Avalonia动画设置

1、针对控件建立sytle
<Window.Styles>
<StyleSelector="TextBlock.flashing">
<Style.Animations>
<AnimationDuration="0:0:1">
<KeyFrameCue="0%">
<SetterProperty="Opacity"Value="0.0"/>
</KeyFrame>
<KeyFrameCue="100%">
<SetterProperty="Opacity"Value="1.0"/>
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
</Window.Styles>
如果是usercontrol更换相应代码
2、相应的控件
<TextBlockClasses.flashing="{Bindingredstatus}"Text="{Bindingstr}"Height="100"Width="200"Foreground="red"/>
3、后端代码
privatebool_redstatus;
publicboolredstatus
{
get
{
return_redstatus;
}
set{SetField(ref_redstatus,value);}
}

privatestring_str;
publicstringstr
{
get
{
if(redstatus)
{
redstatus=false;
}
redstatus=true;
return_str;
}
set{SetField(ref_str,value);}
}
publicReactiveCommand<Button,Unit>ChangeText{get;}

publicMainWindowViewModel()
{
ChangeText=ReactiveCommand.Create<Button>(Changetext);
}

privateinti=0;
privateasyncvoidChangetext(objectobj)
{
str=i++.ToString();

}
总结:关键点在于当出发一次class true后不会重复触发,需要在事件过程中重置,先false再true,这是针对没有相应系统事件的做法
下面是有系统事件的做法,省略了后端触发的代码
<Style Selector="Rectangle.red:pointerover">
<Style.Animations>
<AnimationDuration="0:0:1">
<KeyFrameCue="0%">
<SetterProperty="Opacity"Value="0.0"/>
</KeyFrame>
<KeyFrameCue="100%">
<SetterProperty="Opacity"Value="1.0"/>
</KeyFrame>
</Animation>
</Style.Animations>

</Style>
这里的事件必须存在

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容