Wpf 通知在WCF服务中更改的属性
我有一个WPF应用程序,它通过公开这些方法的客户端调用WCF服务方法。有没有办法将我的应用程序绑定到服务的属性,并在该属性发生更改时得到通知?我知道InotifyProperty已更改,但我对其在这种情况下的效率有一些怀疑。。。谢谢Wpf 通知在WCF服务中更改的属性,wpf,wcf,inotifypropertychanged,Wpf,Wcf,Inotifypropertychanged,我有一个WPF应用程序,它通过公开这些方法的客户端调用WCF服务方法。有没有办法将我的应用程序绑定到服务的属性,并在该属性发生更改时得到通知?我知道InotifyProperty已更改,但我对其在这种情况下的效率有一些怀疑。。。谢谢 编辑:实际上,我只想让我的应用程序知道服务器端发生的更改。这里有几个问题。您可以将代码绑定到WCF服务的客户端,通过使用分部类定义,您可以向其添加INotifyPropertyChanged接口,使其符合您的设计。但实际上连接从服务器推送更新的机制要困难得多 事实上
编辑:实际上,我只想让我的应用程序知道服务器端发生的更改。这里有几个问题。您可以将代码绑定到WCF服务的客户端,通过使用分部类定义,您可以向其添加INotifyPropertyChanged接口,使其符合您的设计。但实际上连接从服务器推送更新的机制要困难得多
事实上,事件将在WCF上工作,并具有合理的性能,即不会出现与轮询相关的延迟。但是,我不会试图压缩您的WCF代码来适应INotifyPropertyChanged模式。相反,为客户机/服务器通信使用更定制的接口,然后在ViewModel中公开INotifyPropertyChanged。只需向您的服务添加一个委托,然后从视图模型或代码隐藏调用服务,并用实现INotifyPropertyChanged接口的属性反映更改: 在职:
public delegate void ServcieUpdate(SomeDataType data);
public ServcieUpdate OnServcieUpdated { get; set; }
更新数据时:
if (OnServcieUpdated != null) OnServcieUpdated(data);
在视图模型中:
private ServiceClient serviceClient = new ServiceClient();
private ObservableCollection<SomeDataType> data = new
ObservableCollection<SomeDataType>();
public YourViewModel()
{
serviceClient.OnServiceUpdated += OnServcieUpdated;
}
public ObservableCollection<SomeDataType> Data
{
get { return data; }
set { data = value; NotifyPropertyChanged("Data");
}
public void OnServcieUpdated(SomeDataType data)
{
Data = data;
}
private-ServiceClient-ServiceClient=new-ServiceClient();
私有ObservableCollection数据=新建
可观察收集();
公共视图模型()
{
serviceClient.OnServiceUpdated+=OnServiceUpdated;
}
公共可观测收集数据
{
获取{返回数据;}
set{data=value;NotifyPropertyChanged(“数据”);
}
已更新服务上的公共void(SomeDataType数据)
{
数据=数据;
}
请查看MSDN上的页面,因为您不熟悉使用
委托
对象。请更详细地描述您的疑问。另外:是否希望收到服务器更改的通知?好的,我编辑了该问题。这并不能解决当服务器端发生更改时更新的问题。您可能需要采取另一种方式看……这正是它所解决的问题(通过使用ServcieUpdate
委托
)。如何通过WCF封送此回调?如何将数据从服务器推送到客户端?没问题,始终很难跟踪移动的目标。尤其是当您不知道它们正在移动时:)