2

最近、WPFアプリケーションをWCFサービス(アプリの変換を目的として関連するWebサイト用に作成されたもの)を使用するように変換しました。

モデルから行っていたリアルタイムのデータバインディングを除いて、すべてがうまくいきました。

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を使用して最新の状態に保たれます。

これに取り組むための最良のアプローチは何ですか?

このクライアント側の機能用に別のクラスを1つ作成しましたが、このようなクラスは複数あり、非常に非セマンティックで長い道のりのようです。それらが部分的であることに気づき、それらを仮想化してからovverideクライアント側にしようとしましたが、仮想プロパティはシリアル化されたため削除されました。

どんな助けでも大歓迎です、オリ

4

1 に答える 1

1

生成された DataContracts をデータ バインディングに使用しないでください。生成されたファイルに INotifyPropertyChanged を実装したのは本当に残念だと思います。

データ コントラクトは、単にサービスに従ったデータのビューです。フォーム/ウィンドウが必ず必要とするデータのビューではありません。

データのサービス表現をモデルとして扱い、ビューにとって最も便利な方法でデータをレンダリングする ViewModel にビューをバインドする必要があります。これはまた、サービスが進化してもデータ バインディングが壊れず、必要な変更はすべてビューモデルで実行できることを意味します。

于 2012-05-30T10:24:31.343 に答える