更新 viewModel 中的 属性

Updating a property in the viewModel

我有一个包含 windows 数据网格的 xaml 文件。它的 Itemsource 是关联 ViewModel 中的 属性。

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

这个方法M内部使用了.Net的Enqueue()TPL(Task Parallel Library)来执行方法,return将结果发送给客户端(使用消息 API).

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

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

提前致谢。

对于标量属性,您无需执行任何操作。当您调用 "OnPropertyChanged" 时,调用已经编组到 UI 线程。然而,不幸的是,有些类型如 ObservableCollections 不是线程安全的。所以备选方案是使用类似 this 的线程安全集合,或者自己处理编组。本质上是使用 Dispatcher 向 UI 线程调用一些代码。这是一个简单的例子:

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