WPF DataTrigger绑定MVVM属性实现动画仅触发一次问题求助
问题根源
你的Ping属性的属性变更通知逻辑存在缺失:Ping的setter中将_ping重置为false时,没有调用OnPropertyChanged()通知WPF绑定系统,导致UI侧始终认为Ping的值为true,DataTrigger的状态一直停留在「已触发进入动作」的状态,后续再给Ping赋值true时,不会重复触发进入动作。
修复步骤
1. 修正ViewModel的Ping属性实现
调整Ping的setter逻辑,确保Ping从true变回false时也能通知UI,同时通过低优先级调度确保绑定系统能先后处理true和false两个状态变更:
public bool Ping { get => _ping; set { _ping = value; OnPropertyChanged(); if (value) { Application.Current.Dispatcher.BeginInvoke(new Action(() => { _ping = false; OnPropertyChanged(); }), DispatcherPriority.Background); } } }
2. 可选优化XAML配置
你当前XAML中的动画启停逻辑已经符合要求,无需额外修改,仅需确认绑定路径指向正确的Ping属性即可。
修改完成后每次触发Ping = true时,都会触发一次完整的动画进入+退出流程,后续重复触发动画会正常执行。
内容的提问来源于stack exchange,提问作者High Plains Grifter
相关产品推荐
相关产品推荐

