【发布时间】:2010-12-16 23:05:09
【问题描述】:
我有一个使用 wcf 网络服务的 wpf 应用程序。它是我的网络服务和应用程序,所以我可以对任何一方进行更改。在 Visual Studio 自动生成的 Reference.cs 文件中,它将此代码用于属性更改事件:
[System.Runtime.Serialization.DataMemberAttribute()]
public string Value {
get {
return this.ValueField;
}
set {
if ((object.ReferenceEquals(this.ValueField, value) != true)) {
this.ValueField = value;
this.RaisePropertyChanged("Value");
}
}
}
虽然我真正想要的是字符串:
[System.Runtime.Serialization.DataMemberAttribute()]
public string Value {
get {
return this.ValueField;
}
set {
if ((object.ReferenceEquals(this.ValueField, value) != true)) {
if (this.ValueField != value)
{
this.ValueField = value;
this.RaisePropertyChanged("Value");
}
}
}
}
这样,如果值相同,属性更改事件就不会发生。为什么这是一个问题是因为我监听文本框的 OnPreviewTextInput 并以编程方式更改值,然后事件发生两次,一次是因为我更改了它,一次是因为 wpf 通过绑定更改了它。
谢谢,
【问题讨论】:
标签: wpf wcf binding propertychanged