-1

我有一个实现 Inotifypropertychanged 的​​类。我也有这个属性,我注释掉了通知。

private Color _CoolColor =Colors.Purple;
    public Color CoolColor
    {
      get
      {
        return _CoolColor;
      }
      set
      {
        if (value != _CoolColor)
        {
          _CoolColor = (Color)value;
          //OnPropertyChanged("CoolColor");
        }
      }
    }

我的 xaml 中的绑定附加到此属性:

BusTextColor="{Binding Path=CoolColor}"

 /// <summary>
    /// Color used for the text containing the hex value of the bus
    /// </summary>
    public Color BusTextColor
    {
      get
      {
        return (Color)GetValue(BusTextColorProperty);
      }
      set
      {
        SetValue(BusTextColorProperty, value);
      }
    }
    public static readonly DependencyProperty BusTextColorProperty =
      DependencyProperty.Register("BusTextColor",
      typeof(Color), typeof(SignalGraph),
      new FrameworkPropertyMetadata(new Color(), new PropertyChangedCallback(CreateBrushesAndReDraw)));

我只绑定了这个,因为我想确保我没有发疯,但我一定发疯了,因为当 CoolColor 更改时,我的 BusTextColor 正在更新。有人请让它停止工作。

我这样做只是因为我拥有的另一个依赖属性没有正确绑定到我的视图模型。我知道这可能有一些明显的原因,但我肯定错过了。

编辑:那篇文章很有趣。但在我的情况下,我实现了 Inotifypropertychanged 接口,我只是不引发事件 OnPropertyChanged。我意识到我也应该发布它。

protected void OnPropertyChanged(string name)
{
  PropertyChangedEventHandler handler = PropertyChanged;
  if (handler != null)
  {
    handler(this, new PropertyChangedEventArgs(name));
  }
}
4

2 回答 2

1

有人请让它停止工作。

只需设置BindingModeOneTime

于 2013-09-10T21:01:35.313 回答
0

由于没有人有一个明显的答案,我知道我在其他地方做错了什么,我发布的内容应该有效。

最终意识到这是我以前遇到的一个错误。我在某个地方手动更改了目标的值并破坏了绑定。在这些情况下,需要开始检查代码对绑定的干扰,而不是假设我在 xaml 中对绑定使用了不正确的语法

于 2013-09-10T21:16:30.180 回答