在ViewModel1

时间:2017-11-02 04:58:31

标签: c# wpf mvvm

我有以下设置(这是我第一次涉足MVVM而我正试图从使用代码隐藏切换):

我有Contact个。有一个窗口显示所有联系人。在左侧是ListView,其ContactCard列表中每个ContactCard都可以包含图片。

列表右侧是ContactDataDisplay,其中显示了所选联系人的所有信息,包括与ContactCard中相同的图片。 ContactDataDisplay内部是EditableImage。这些只是用2个按钮覆盖的图像,"更新"和#34;删除",当用户将鼠标悬停在图像上时。 EditableImage有自己的ViewModel(因为它不应该只绑定Contact s

我正确连线,以便使用绑定在ContactDataDisplay中更新图像(这很容易,因为它们都出现在同一个ViewModel中)。但是,考虑到它有一个完全独立的ViewModel,我被困在如何更新ContactCard图像。

我尝试向EditableImage中的按钮添加点击监听器并使用代码后面的新图片更新ContactCard,但我无法强制执行方法调用的顺序据我所知,这似乎违背了MVVM的观点。

如何连接ContactCardViewModel和我的EditableImageViewModel以便ContactCard图片发生更改,而不传递我{{1}中绑定的实际Contact对象1}}。

1 个答案:

答案 0 :(得分:0)

您应该尝试使用Event Aggregator Pattern。 https://social.technet.microsoft.com/wiki/contents/articles/23314.using-the-event-aggregator-pattern-to-communicate-between-view-models.aspx

在这种情况下,ViewModel1将成为发布者,ViewModel2将成为订阅者。