Gei*_*erg 9 .net c# silverlight wcf inotifypropertychanged
我在SilverLight项目中使用Fody来自动生成属性依赖项.但是,如果setter已包含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; }
}
Run Code Online (Sandbox Code Playgroud)
当我将服务添加为服务引用并生成客户端代码时,每个类都设置为实现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");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何生成未实现的客户端代码INotifyPropertyChanged
?
car*_*ira 16
添加服务引用后,在服务引用Reference.svcmap
下打开该文件(您可能需要在"项目"菜单中启用"显示所有文件"选项).找到<EnableDataBinding>
元素,并将值更改为false.这将从INotifyPropertyChanged
生成的数据合同中删除.