2

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

谢谢,

4

1 回答 1

0

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

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

于 2010-12-16T23:08:39.650 回答