【发布时间】:2011-05-11 12:39:13
【问题描述】:
我在从绑定到文本框的代码中更新属性值时遇到问题(文本框不显示新值)。
它正常工作没有任何问题,但在这种情况下,源类在单独的程序集中(不知道它是否有任何区别)。
- 如果我在文本框中输入,值将在代码中更新
- 当我直接在代码文本框中更改属性值时,不显示新值。
- 再次更改文本框中的值后,先前设置的值(在代码中)被覆盖(因此绑定仍然有效)。
此外,我检查了 PropertyChanged 事件是否被触发,并且是在每次更改之后。
任何猜测为什么它不起作用?下面对应的绑定和源类。
TextBox Text="{Binding Path=Description, Mode=TwoWay}"
[DataContract]
public class Source : INotifyPropertyChanged
{
private String _Description;
[DataMember]
public String Description
{
get { return _Description; }
set
{
if (_Description == value)
return;
_Description = value;
OnPropertyChanged("Description");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
}
我已经修复了它显然没有连接到不同组件的问题。我在为属性设置值时遇到错误。
【问题讨论】:
-
您是否尝试过在 OnPropertyChanged 中设置断点并查看是否有任何内容附加到 PropertyChanged 事件?这应该告诉您是否正在通知 TextBox。