我在wcf服务中定义了以下类
public class Autoturism : INotifyPropertyChanged
{
private int _AutoturismID;
public int AutoturismID
{ get { return _AutoturismID; } set { _AutoturismID = value; NotifyPropertyChanged("AutoturismID"); } }
private string _NumarAutoturism;
public string NumarAutoturism
{ get { return _NumarAutoturism; } set { _NumarAutoturism = value; NotifyPropertyChanged("NumarAutoturism"); } }
public bool IsDirty { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
IsDirty = true;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(info));
}
我想使用IsDirty值来检查对象是否需要保存在数据库中。
在silverlight页面中,我有以下行:
AutoCurent = new Autoturism();
AutoCurent.NumarAutoturism="13424";
我的问题是,在最后一行之后,我期望有IsDirty= true,但它仍然是false。我认为来自服务引用的auturism类不再有NotifyPropertyChanged方法。
我做错了什么?谢谢你
如果您正在使用RIA WCF服务(我必须从您的问题中假设),那么您的客户端版本的Autoturism对象将只具有服务端类的属性,而不是代码。
基本上RIA服务为客户端创建的代理对象只有相同的"形状"(但不是代码)。
要完全共享代码和数据,您需要将它们作为.shared.cs类。然后将完整的源代码复制到您的客户端项目中。