2012-07-16 59 views
6

我正在使用MVVMLight創建WPF應用程序。我使用ViewModelLocator來創建視圖模型。 我的問題是在它們之間傳遞參數。如何使用viewmodellocator在視圖模型之間發送參數

例如,我們有一個情況:

我們有一些實體,當他們中的一個doubleclicked我需要創建與該實體的細節一個新視圖的網格。如何將選定的項目ID發送到新視圖的ViewModel?

+3

嗨,你是否使用任何消息服務就像GalaSoft或任何消息通信從ViewModel查看 – ethicallogics 2012-07-16 15:32:05

回答

3

通常情況下,您會使用某種消息系統,例如Prism的EventAggregator或MVVM Light的Messenger

這兩個系統都提醒我一個尋呼系統:應用程序的任何部分都可以廣播消息,以及應用程序的任何部分並訂閱以偵聽消息。

那麼您的DoubleClick命令將廣播LoadItemMessage包含所選項目Id,不管是負責顯示將訂閱接收LoadItemMessages該項目,每當聽到LoadItemMessage將加載的項目。

如果您有興趣,我在我的博客上有一篇關於Communication between Viewmodels with MVVM的簡短文章,它提供了事件系統的高級概述。

+1

謝謝,我對消息系統有一點了解,但是你的文章使事情變得簡單 – Eugene 2012-07-17 08:05:22

1

這是ViewModelLocator的問題(將參數從View xaml傳遞給ViewModel)。你可以做的是在ViewModelLocator類中創建一個Type對象的屬性參數或(類型爲SelectedItem的)屬性參數。將其綁定到Grid的SelectedItem,然後將其傳遞給您的新ViewModel。我希望這將有所幫助。 編號:如果您創建類型對象的屬性不要忘記投它。

+0

如果我正確理解你的方法可以工作,但管理龐大的系統將是非常困難的。你能否提供一些代碼示例來幫助我理解。謝謝 – Eugene 2012-07-17 08:07:15

相關問題