2015-06-11 136 views
2

我有一個具有Windows數據網格的xaml文件。它的Itemsource是關聯的ViewModel中的一個屬性。更新視圖模型中的屬性

在我的ViewModel類的xaml(即客戶端),我使用messagging API調用服務器上的方法M. (服務器使用.net窗口服務實現)。

這種方法M.內部使用的.Net的Enqueue()TPL(任務並行庫)執行方法(使用messagging API)將結果返回給客戶端。

只要在服務器上完成此方法,我需要以編程方式更新ViewModel中的屬性。 我該如何做到這一點?

(的問題是,客戶端向一個UI thread.The服務器上的服務器的請求異步地在單獨的線程中運行。)預先

感謝。

+0

你能提供一些代碼嗎? – VMAtm

回答

1

對於標量屬性,你不需要做任何事情。當您調用「OnPropertyChanged」時,調用已經編組到UI線程。然而,不幸的是,像ObservableCollections這樣的一些類型不是線程安全的。因此,替代方案是使用線程安全集合,如this,或者處理自己的編組。基本上使用Dispatcher來調用一些代碼到UI線程。這裏有一個簡單的例子:

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