C#PropertyChanged没有更新DataBinding

时间:2017-08-28 15:43:13

标签: c# winforms data-binding inotifypropertychanged

我有一个WinForms项目,它使用数据绑定来跟踪实时价格。价格如此约束:

var btcPriceInUsdBinding = new Binding("Text", Client, "BtcPriceInUsd", true, DataSourceUpdateMode.OnPropertyChanged);
btcPriceInUsdBinding.Format += (s, e) => { e.Value = string.Format("BTC/USD: ${0:#####0.00}", e.Value); };
btcUsdValueLabel.DataBindings.Add(btcPriceInUsdBinding);

存储数据的实际对象继承自ObservableObject - 即实现INotifyPropertyChanged的抽象基类。

public abstract class ObservableObject : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    public void Notify([CallerMemberName]string property = null)
    {
        if (property != null)
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
    }

}

然后当一个值改变时,它会像这样被触发

    public decimal BtcPriceInUsd
    {
        get { return _btcPriceInUSD; }
        set {
            _btcPriceInUSD = value;
            Notify();
        }
    }

调试,我可以看到正确调用了PropertyChanged,并且在Binding.Format事件内部显示e.Value是正确的值。但是,尽管如此,标签仍未更新。为什么会这样?

0 个答案:

没有答案