C# wpf淡入动画只工作一次
我已经创建了淡入淡出动画,由viewmodel中的属性更改触发。第一次淡入淡出时效果良好,但每次我重复此操作时,只显示淡出,这意味着控件将保持不可见,直到它闪烁到不透明度1,然后淡出 XAML: 和调用(调试):C# wpf淡入动画只工作一次,c#,wpf,animation,C#,Wpf,Animation,我已经创建了淡入淡出动画,由viewmodel中的属性更改触发。第一次淡入淡出时效果良好,但每次我重复此操作时,只显示淡出,这意味着控件将保持不可见,直到它闪烁到不透明度1,然后淡出 XAML: 和调用(调试): “我在干什么呢?”处理完故事板后,您需要删除它们。比如: ... (与淡出相同,给它一个名称) 或者,您也可以在退出按钮上执行此操作: ... 否则,最后一个情节提要将继续“推送”其最后一个值,因此您不会看到任何更改您需要在处理完情节提要后删除它们。比如: ... (与淡出
“我在干什么呢?”处理完故事板后,您需要删除它们。比如:
...
(与淡出相同,给它一个名称)
或者,您也可以在退出按钮上执行此操作:
...
否则,最后一个情节提要将继续“推送”其最后一个值,因此您不会看到任何更改您需要在处理完情节提要后删除它们。比如:
...
(与淡出相同,给它一个名称)
或者,您也可以在退出按钮上执行此操作:
...
否则,最后一个情节提要将继续“推送”其最后一个值,这样您就不会看到任何更改只想注释名称必须位于
-Tag^^thx处对于您的答案,效果完美只想注释名称必须位于
-Tag^^thx处对于您的答案,效果完美
<DataTemplate x:Key="MessageTemplate">
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding FadeInAnimationState}" Value="Active">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.25" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding FadeOutAnimationState}" Value="Active">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity">
<EasingDoubleKeyFrame KeyTime="0" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</DataTemplate.Triggers>
<StatusBarItem>
...
</StatusBarItem>
</DataTemplate>
...
<ContentPresenter ContentTemplate="{StaticResource MessageTemplate}" Content="{Binding}"/>
private DisplayState _messageState;
private DisplayState MessageState
{
get { return _messageState; }
set
{
_messageState = value;
if (value == DisplayState.Displayed)
{
FadeOutAnimationState = AnimationState.Inactive;
FadeInAnimationState = AnimationState.Active;
}
else
{
FadeInAnimationState = AnimationState.Inactive;
FadeOutAnimationState = AnimationState.Active;
}
}
}
public AnimationState FadeInAnimationState
{
... // getter and setter with NotfiyPropertyChanged
}
public AnimationState FadeOutAnimationState
{
... // getter and setter with NotfiyPropertyChanged
}
MessageState = DisplayState.Displayed;
await Task.Delay(duration);
MessageState = DisplayState.Hidden;
await Task.Delay(TimeSpan.FromSeconds(1));