2012-11-27 29 views
0

我的一個視圖包含一個下拉菜單。在進行選擇時,必須讓程序中的視圖模型和所有其他視圖模型知道該更改,以便他們可以更新其視圖。 當前每個視圖模型都包含它自己的選擇副本,當它被更改時,我有 手動更新它們(我只是每個都有一個公共Refresh(int newVal))。有沒有更好的方法來做到這一點?如何通知多個視圖模型的變量變化?

回答

1

可能的方法可能是使用事件聚合器。聚合器用於在發佈者和接收者之間分發消息。

需要發送信息登記與EventAggregator的消息類型和對象需要的對象收到也認購他們在EventAggregator

有很多方法可以實現這一點,我建議使用您選擇的任何MVVM框架。大多數常見的框架都提供了經過時間驗證的實現。

一個例子是Caliburn Micro。 CM框架已經爲此提供了EventAgregator類。

查看此處的示例:Introduction to messaging with Caliburn.Micro’s EventAggregator

1

你可以使用一個事件聚合器並通過它發佈一個可以被每個視圖模型處理的事件(可能在某種基類中?)。

1

使用(聚合)事件。

在視圖加載時訂閱事件,卸載視圖時取消訂閱並確保在視圖模型加載時初始化視圖模型中的變量。然後在選擇更改時發佈事件(將新數據作爲參數傳遞)。