我有个问题困扰我一段时间了:
我有一个冗长的IO操作,我异步调用它,我希望UI显示一个闪烁的文本,告诉用户数据正在加载。
我的IsLoading布尔属性位于ViewModel中,我使用ControlStoryboardAction启动闪烁动画,该动画设置为永久重复。对于我的ControlStoryboardAction触发器,我配置了一个数据触发器,以查看IsLoading是否为真,如果为真,则启动我的故事板。
我的问题是,当IO操作返回,并将IsLoading设置为false时,动画将继续播放。我以为一旦触发条件评估为假,它会停止动画吗?
然后,我添加了第二个ControlStoryboardAction,如果IsLoading计算为false,则停止动画,但这没有任何效果。动画继续播放后,IsLoading是假的。
有人能向我解释一下触发器在ControlStoryboardAction中是如何工作的吗?在WPF中的常规数据触发器中,一旦将条件计算为false,则属性将被设置为其原始状态。WPF动作中的触发器似乎不一样吗?
发布于 2014-12-17 18:52:26
一般来说,当指定的条件不再为真时,DataTrigger
会将属性返回到以前的值。
然而,行动却并非如此。假设甚至存在这样的操作,触发器就无法知道什么操作会“撤消”触发操作的效果。
我认为您要做的是在相反的条件下定义另一个触发器(例如,在IsLoading上使用布尔型而不是转换器,添加一个IsNotLoading属性等等)。运行“停止”ControlStoryboardAction
。
https://stackoverflow.com/questions/2695891
复制相似问题