我遇到了一個問題,其中不會爲所有屬性引發生成的Ria Services實體中的 PropertyChanged事件。WCF Ria服務實體和INotifyPropertyChanged
當我看到生成的代碼(客戶端),我可以看到我的實體從實體對象,實現 INotifyPropertyChanged的獲得。我還可以看到,一些屬性,如 Id屬性,正在提高事件的 PropertyChanged,但有些屬性不是。
我沒有使用任何T4模板,所以默認使用。
所以,我的問題是:
是否有一個選項/屬性,我可以設置爲使得的PropertyChanged事件引發的生成的客戶端實體的任何屬性?
任何幫助,將不勝感激。
編輯:
這裏有一個特性的一個例子,在自動生成客戶端文件,不提高的PropertyChanged事件:
[DataMember()]
[Required()]
[StringLength(50)]
public string FirstName
{
get
{
return this._firstName;
}
set
{
if ((this._firstName != value))
{
this.OnFirstNameChanging(value);
this.RaiseDataMemberChanging("FirstName");
this.ValidateProperty("FirstName", value);
this._firstName = value;
this.RaiseDataMemberChanged("FirstName");
this.OnFirstNameChanged();
}
}
}
而且這是模型中定義的內容服務器端:
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String FirstName
{
get
{
return _FirstName;
}
set
{
OnFirstNameChanging(value);
ReportPropertyChanging("FirstName");
_FirstName = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("FirstName");
OnFirstNameChanged();
}
}
這裏有一個特性的一個例子,在自動生成客戶端文件,該文件不提高的PropertyChanged事件:
[DataMember()]
[Editable(false, AllowInitialValue=true)]
[Key()]
[RoundtripOriginal()]
public Guid Id
{
get
{
return this._id;
}
set
{
if ((this._id != value))
{
this.OnIdChanging(value);
this.ValidateProperty("Id", value);
this._id = value;
this.RaisePropertyChanged("Id");
this.OnIdChanged();
}
}
}
這是什麼模型定義服務器端:
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Guid Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}
哪些屬性不會引發PropertyChanged事件?添加一些你的代碼來解釋你的意思 – Jehof 2011-05-26 11:19:24
Jehof,謝謝你的回覆。我只是按照你的要求添加了一些代碼。 – 2011-05-26 13:09:29