You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:06:03