Class中的WCF功能

时间:2012-05-30 09:23:17

标签: c# wpf wcf data-binding serialization

我最近将WPF应用程序转换为使用WCF服务(为相关网站编写,目的是转换应用程序)。

一切都很顺利,我从模型中做了一些实时的数据绑定。

public decimal? SalePrice
    {
        get { return _salePrice; }
        set
        {
            _salePrice = value;
            TotalSalesPrice = value + _warranty;
        }
    }

在References.cs中,这变为

[System.Runtime.Serialization.DataMemberAttribute()]
    public System.Nullable<decimal> SalePrice {
        get {
            return this.SalePriceField;
        }
        set {
            if ((this.SalePriceField.Equals(value) != true)) {
                this.SalePriceField = value;
                this.RaisePropertyChanged("SalePrice");
            }
        }
    }

然后使用INotifyPropertyChanged保持表格最新。

解决这个问题的最佳方法是什么?

我已经为这个客户端功能编写了一个单独的类,但是有这样的多个类,这似乎是一种非语义和漫长的做事方式。我注意到它们是偏向的,并试图使它们成为虚拟,然后有一个ovveride客户端,但虚拟属性在序列化时被删除。

任何帮助非常感谢, 奥利

1 个答案:

答案 0 :(得分:1)

您不应该使用生成的DataContracts进行数据绑定。我认为他们在生成的文件上实现了INotifyPropertyChanged是一种真正的耻辱,因为它鼓励人们做错事

数据合同只是根据服务查看数据。表单/窗口不一定需要数据视图。

您应该将数据的服务表示形式视为模型,并将视图绑定到ViewModel,ViewModel以最方便的方式为View呈现数据。这也意味着随着服务的发展,您的数据绑定不会中断,您知道您必须完成的所有更改都可以在viewmodel中完成