10

プロパティの依存関係を自動生成するために、SilverLight プロジェクトでFodyを使用しています。RaisePropertyChangedただし、セッターに既にメソッド呼び出しが含まれている場合は機能しません。

回避策として、Web サービス参照コードを生成せずINotifyPropertyChangedに部分メソッドで実装することが考えられます。

なしで Web サービス参照コードを生成するにはどうすればよいINotifyPropertyChangedですか?

私は WCF サービスを持っています。これを MaterialService.svc と呼びましょう。次のようになります。

[ServiceContract]
public interface IMaterialService
{
    [OperationContract]
    Material GetMaterial(int id);
}

[DataContract]
public class Material
{
    [DataMember]
    public int ID { get; set; }

    [DataMember]
    public string Name { get; set; }
}

サービスをサービス参照として追加し、クライアント コードを生成すると、すべてのクラスが実装するように設定されますINotifyPropertyChanged

public partial class Material : object, System.ComponentModel.INotifyPropertyChanged {

    private int IDField;

    private string NameField;

    [System.Runtime.Serialization.DataMemberAttribute()]
    public int ID {
        get {
            return this.IDField;
        }
        set {
            if ((this.IDField.Equals(value) != true)) {
                this.IDField = value;
                this.RaisePropertyChanged("ID");
            }
        }
    }

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

を実装していないクライアント コードを生成するにはどうすればよいINotifyPropertyChangedですか?

4

1 に答える 1

17

サービス参照を追加したら、サービス参照のReference.svcmap下にあるファイルを開きます([プロジェクト]メニューの[すべてのファイルを表示]オプションを有効にする必要がある場合があります)。そこで要素を見つけて<EnableDataBinding>、値をfalseに変更します。INotifyPropertyChangedこれにより、生成されたデータコントラクトからが削除されます。

于 2012-08-13T20:04:19.203 に答える