WPF 4 ControlStoryboard动作触发器的行为是什么?

WPF 4 ControlStoryboard动作触发器的行为是什么?,wpf,Wpf,我有一个问题困扰了我一段时间: 我有一个漫长的IO操作,我异步调用它,我希望我的UI显示一个闪烁的文本,告诉用户数据正在加载 我的ViewModel中有一个IsLoading布尔属性,我使用ControlStoryboard动作启动闪烁动画,该动画设置为永远重复。对于我的ControlStoryboard操作触发器,我配置了一个数据触发器来查看IsLoading是否为true,如果为true,则启动我的storyboard 我的问题是,当IO操作返回时,我将IsLoading设置回false,动

我有一个问题困扰了我一段时间:

我有一个漫长的IO操作,我异步调用它,我希望我的UI显示一个闪烁的文本,告诉用户数据正在加载

我的ViewModel中有一个IsLoading布尔属性,我使用ControlStoryboard动作启动闪烁动画,该动画设置为永远重复。对于我的ControlStoryboard操作触发器,我配置了一个数据触发器来查看IsLoading是否为true,如果为true,则启动我的storyboard

我的问题是,当IO操作返回时,我将IsLoading设置回false,动画将继续播放。我想一旦触发条件评估为false,它会停止动画吗

然后,我添加了第二个ControlStoryboard操作,以在IsLoadingevalute为false时停止动画,但这没有任何效果。卸载后动画继续播放为假


有人能给我解释一下触发器在ControlStoryboardAction中是如何工作的吗?在WPF中的普通数据触发器中,一旦条件求值为false,属性将被设置回其原始状态。似乎WPF操作中的触发器的工作方式不一样?

一般来说,当指定的条件不再为真时,
DataTrigger
会将属性恢复到以前的值

然而,行动并非如此。触发器无法知道什么操作会“撤销”已触发操作的效果,假设甚至存在这样的操作


我认为您要做的是在相反的条件下定义另一个触发器(例如,在IsLoading上使用布尔not转换器,添加IsNotLoading属性等),该触发器通常运行“Stop”
ControlStoryboard动作,当指定的条件不再为真时,
DataTrigger
会将属性恢复到以前的值

然而,行动并非如此。触发器无法知道什么操作会“撤销”已触发操作的效果,假设甚至存在这样的操作

我认为您要做的是在相反的条件下定义另一个触发器(例如,在IsLoading上使用布尔not转换器,添加IsNotLoading属性,等等),该触发器运行“停止”
ControlStoryboard动作