在reference.cs中将referenceequals更改为equals

时间:2010-12-16 23:05:09

标签: wpf wcf binding propertychanged

我有一个使用wcf webservice的wpf应用程序。它是我的web服务和应用程序,所以我可以对任何一方进行更改。在由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通过绑定改变了它。

谢谢,

1 个答案:

答案 0 :(得分:0)

如果您同时控制服务器和客户端,则可以在单独的程序集中定义类型,然后从两个项目中引用它。

在WCF引用添加对话框高级设置中,您可以告诉它重用类型,然后它将使用客户端上的公共程序集中存在的数据对象的任何实现。