我有一个实现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正在更新。有人请让它停止工作。
我只是这样做,因为我拥有的另一个依赖属性没有正确绑定到我的viewmodel。我知道可能有一些明显的原因,但我肯定错过了它。
编辑: 那篇文章很有意思。但在我的情况下,我实现了Inotifypropertychanged接口,我只是不提高事件OnPropertyChanged。我意识到我也应该发布它。
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
答案 0 :(得分:1)
有人请让它停止工作。
只需将BindingMode
设置为OneTime
答案 1 :(得分:0)
由于没有人有明显的答案,我知道我在其他地方做错了什么,我发布的内容应该有效。
最终意识到这是我之前遇到过的一个错误。某处我手动更改了目标的值并打破了绑定。在这些情况下需要开始检查代码干扰绑定,而不是假设我在xaml中使用不正确的绑定语法