-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

誰か動作を止めてください。

に設定するだけBindingModeですOneTime

于 2013-09-10T21:01:35.313 に答える
0

誰も明確な答えを持っていなかったので、私はどこかで何か間違ったことをしたことを知っていました.投稿していたものはうまくいくはずです.

最終的に、それは私が以前に持っていたバグであることに気付きました。どこかでターゲットの値を手動で変更し、バインディングを壊しました。xaml でバインディングに不適切な構文を使用していると仮定するのではなく、これらの状況でバインディングとのコード干渉のチェックを開始する必要があります。

于 2013-09-10T21:16:30.180 に答える