2015-02-24 93 views
0

我目前正在使用WPF和MVVM設計模式開發應用程序。我試圖做以下事情:WPF和MVVM - 如何在多個視圖模型中共享一個模型

我想有兩個模型,父母和孩子。父類有多個子類對象,每個子類共享一個父對象。

然後,我想創建兩個視圖模型,父視圖模型和子視圖模型。此外,我想讓父視圖模型具有父模型,並將子模型分配給父模型中的每個子視圖模型。

我能想到的一種解決方案是讓父視圖模型具有子視圖模型並將子模型分發給父視圖模型內的每個子視圖模型。

但是,我不想讓父視圖模型具有子視圖模型,因爲父模型和子模型之間的關係已經創建。如果你這樣做,你也必須爲視圖模型建立同樣的關係。

所以,我想共享一個父模型與子視圖模型和父視圖模型,而不讓父視圖模型具有子視圖模型。

請問大家對這個問題有什麼解決辦法?謝謝。

+0

模型應該沒有視圖模型的知識。在我的情況下,我有一個ParentViewModel,它有一個ParentModel,我將創建一個ChildModel並將其添加到ParentModel,並將ChildModel添加到ChildViewModel,然後將ChildViewModel添加到ParentViewModel。它會變得很多工作,但可以這麼說「純」。 – Kcvin 2015-02-25 07:04:30

回答

0

謝謝你回答我的問題。我解決了這個問題,使用父視圖的附加行爲。這是我做的。

  1. 我註冊了一個名爲「ChildModels」的自定義屬性,它綁定了ObservableCollection。
  2. 我創建了名爲「OnChildModelsPropertyChanged」的行爲,並在從父視圖模型給出子模型時觸發它。
  3. 在OnChildModelsPropertyChanged方法,我創建了相同數量的子視圖模型作爲兒童模特,給了一個子模型每個孩子視圖模型
  4. 這創造了父模型和子模型之間的關係,而不讓父母視圖模型和子視圖模型彼此瞭解。

我的解釋聽起來可能對你很不好。但這幾乎是我所做的。

再次感謝您的回答,並有一個不錯的編碼生活!