0

我有两个视图模型ViewModelAViewModelB它们都使用一个公共DataServiceA来检索名为Theme. ViewModelB 可以更改该设置并将其保存到数据库中。发生这种情况时,ViewModelA不会更新该主题值。
我一直在尝试找出正确的行动方案以允许它也对其进行更新,并提出了一些选择:

  1. 保存值时使 DataService 引发属性通知(我不喜欢这样)
  2. 使用 MessengerService 使它们保持同步。(我遇到了消息循环问题)
  3. 将一个 ViewModel 传递给另一个

有任何想法吗?

4

2 回答 2

1

听起来像是使用事件的好案例,如果他们都可以访问 DataServiceA ,当主题改变时你能不引发事件吗?

所以.. 在 DataServiceA 中,修改主题时会引发“OnThemeChanged”事件,并且 ViewModel 可以订阅该事件并在引发时更新其内容。

于 2012-11-27T14:10:10.357 回答
0

如果他们两个都使用相同的实例DataServiceA,我认为这不是一个坏主意,它DataServiceA也会实现INotifyPropertyChangedTheme并在属性更改时引发事件。

但如果您不喜欢这个想法,另一种选择是使用EventAggregator并发布事件。我个人认为第一个选项已经足够了,但这是你的决定......

于 2012-11-27T14:02:03.487 回答