2016-01-29 56 views
0

我們正在使用MVVM Light開發新的WPF應用程序。我們有一個自定義的ObservableCollection,它以綁定到數據網格開始。根據項目規範,我們必須從顯示數據網格的表單開始,然後當用戶選擇一行時,我們以另一種形式向用戶顯示詳細信息視圖。在這一點上,我們得到選定的行並將其分配給我們分配給MVVM Light消息的對象,以便詳細視圖將能夠顯示記錄的詳細信息。使用MVVM Light的消息傳遞ObservableCollection時,是通過傳遞的副本還是傳遞的引用?

現在我們正在進入這個領域,我們遇到了一個複雜問題。規範要求詳細信息視圖能夠瀏覽集合,儘管此時它沒有集合。我們已經完成了,我們可以通過一個接口來完成這個任務,我們定義了我們稱之爲IRecordService的方法,併爲我們使用的每種記錄類型實現它。然而,問題在於記錄不知道它是否是集合中的第一條記錄,也就是最後一條記錄等等。由於細節表單上的按鈕可以讓用戶瀏覽集合,因此這是必要的。我們一直在努力做到這一點,例如CustomerRecordService,但到目前爲止還沒有解決。如果我們堅持下去,也許會這樣。

但我一直在想,如果不是創建一個具有所選記錄的對象,而是將其傳遞到消息中,而是將整個集合和所選記錄的關鍵字傳遞給消息,然後被詳細視圖模型捕獲?在這種情況下,我的同事首要關心的是ObservableCollection如何通過?傳遞ObservableCollection的副本還是引用列表viewmodel中的ObservableCollection?我會認爲它是一個參考,但是想要確保我是對的,或者不是。

回答

1

它必須只是一個參考。否則,使者將不得不知道如何克隆每一個對象。但你可以輕鬆地檢查它。在您的詳細信息視圖模型中獲取對象後,請更改它。添加一些東西,刪除一些東西並更改集合中某些對象的某些參數。然後檢查它是否已在網格中的主窗體中更改。

+0

同意這是一個參考。 –