绑定可以工作到不实现的源属性吗 通知属性已更改.

本文关键字:属性 通知 工作 实现 绑定 | 更新日期: 2023-09-27 18:30:48

我有一个实现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)));

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

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

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

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

绑定可以工作到不实现的源属性吗 通知属性已更改.

有人请让它停止工作。

只需将BindingMode设置为OneTime

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

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