PropertyChanged并没有调用自己的getter

时间:2014-08-25 16:29:48

标签: silverlight propertychanged

我有一些基本属性。在幕后,我使用文本值和要受影响的属性的名称填充Lookup。我有CostUpdated, CostCostUpdated, CostSumCostUpdated, TotalSum。我的期望是我的所有三个Silverlight XAML绑定都应该访问Getters,因此在设置Cost时重新更新文本字段。因此设置了成本,并且应该为所有三个调用Getters。

public decimal Cost {
    get {
        return _Cost;
    }
    set {
        _Cost = value;
        OnPropertyChanged("CostUpdated")
    }
}

public decimal CostSum {
    get {
        return _CostSum;
    }
    set {
        _CostSum = value;
    }
}

public decimal TotalSum {
    get {
        return _TotalSum;
    }
    set {
        _TotalSum = value;
    }
}

Lookup<string, string> DependentProperties;
public event PropertyChangedEventHandler PropertyChanged;

public void OnPropertyChanged(string property)
{
    foreach (var prop in DependentProperties[property])
        PropertyChanged(this, new PropertyChangedEventArgs(prop));
}

foreach获取我注册的所有三个值。当我踩过时,所有这三个似乎都会执行,但是&#34; Cost&#34;从未被击中过。我不能进入PropertyChangedEventArgs,因为它的系统代码,但那里的东西取消了执行,并没有抛出异常。其他两个按预期命中。

这是踢球者:如果我关闭Silverlight调试器,它可以正常工作。我们中的一些人知道附加调试器会导致副作用,例如取消无限循环或过度分析。但我不想要只在非调试器世界中运行的代码!!

1 个答案:

答案 0 :(得分:0)

如果禁用XAML绑定调试,则问题就消失了。

设置Binding.IsDebuggingEnabled = false;(例如在您的app.xaml.cs中)

如果没有附加调试器,IsDebuggingEnabled标志将设置为false,因此在没有调试器的情况下运行时不会出现问题。