我有一个使用 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 通过绑定更改了它。
谢谢,