2010-06-28 65 views
1

我正在使用Josh Smith的MVVM Foundation項目Messenger類,並且只是有關於取消訂閱消息的問題。目前,我有註冊信息,例如串多的ViewModels我有 -mvvm wpf使者類,取消註冊消息

ViewModelA - 寄存器信息「A」 ViewModelB - 對消息寄存器「A」

所以兩個註冊消息具有相同串。

我的問題是,當ViewModel關閉時(假設多個ViewModel可以具有相同的消息字符串),從ViewModel的實例註銷特定消息的最佳方法是什麼。

乾杯,

Tim。

回答

2

Messenger類的全部關鍵是它只包含對訂閱者(「同事」)的弱引用,所以如果關閉了ViewModel,它將在垃圾收集後立即停止接收消息。

如果等待垃圾收集仍然不夠好,可以嘗試強制垃圾收集。有關更多信息,請參閱this link

我能想到的唯一另一種替代方法是繼承Messenger並編寫自己的Unregister()方法。