我有以下设置(这是我第一次涉足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}}。
答案 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将成为订阅者。