更新视图中的属性模型

本文关键字:属性 模型 新视图 更新 | 更新日期: 2023-09-27 17:55:36

我有一个带有Windows数据网格的xaml文件。其 Itemsource 是关联 ViewModel 中的一个属性。

在我的 xaml(即客户端)的 ViewModel 类中,我使用消息传递 API 在服务器上调用方法 M。(服务器是使用 .net Windows 服务实现的)。

此方法 M 内部使用 。Net的Enqueue()TPL(任务并行库)来执行方法并将结果返回给客户端(使用消息传递API)。

一旦此方法在服务器上完成,我需要以编程方式更新ViewModel中的属性。请问我该如何实现这一点?

(问题是客户端在 UI 线程上向服务器发出请求。服务器在单独的线程上异步运行。

提前谢谢。

更新视图中的属性模型

对于标量属性,您无需执行任何操作。当您调用"OnPropertyChanged"时,调用已经封送到UI线程。但是,不幸的是,某些类型(如 ObservableCollections)不是线程安全的。因此,替代方法是使用这样的线程安全集合,或者自己处理编组。 实质上是使用调度程序向 UI 线程调用一些代码。 下面是一个简单的示例:

App.Current.Dispatcher.Invoke(new Action(()=>
{ 
    //The code I want to run on the UI thread.
}));