我目前在EF(House,Room,Item)中有三种模型。不同DTO的viewmodels之间的MVVM通信
public class House
{
property int ID { get; set; }
property string Name { get; set; }
property List<Room> Rooms { get; set; }
}
public class Room
{
property int ID { get; set; }
property string Name { get; set; }
property List<Item> Items { get; set; }
}
public class Item
{
property int ID { get; set; }
property string Name { get; set; }
}
在我的UI我有一个TreeView和一个显示区域显示的项目进行修改的详细信息,当我双击在树视图中单击某个项。
我的TreeView,以提高性能调用web服务返回以下DTO/s的
public class LayoutItemDTO
{
property int ID { get; set; }
property string Name { get; set; }
property List<LayoutItemDTO> Children { get; set; }
}
这些DTO的映射使用查询到的房子,房间,项目模型数据库建立。
现在,当用户双击树形视图上的房屋项目时,它会调用Web服务将带有房间集合的房屋模型返回到用户添加/删除房间的视图中,当它们关闭视图时,它会提示保存。
当用户双击房间时(即向房间添加/删除项目),也会发生同样的情况。
除了保持树形视图和打开的视图不同步之外,这一切都很有效,所以如果它们改变了房间的名称或添加/删除了一个项目,我希望它在内存中的树视图中反射,并在它们取消更改时恢复关闭。
目前我已经完成了这个使用事件聚合器,但它似乎不整洁的调用每个动作的事件,如果我可以使用WPF绑定它会立即工作。
在树形视图中不使用相同模型的原因是由于这些模型在获取所有导致性能问题的所有信息时比它们显示的信息多得多。
感谢你好了,我们确实有这些DTO的的ViewModels所以树形视图有layoutviewmodel的反应和看法时,这是开放的有houseviewmodel与嵌套视图模型的房间和这些项目后,用户已经双击树视图和第二次服务调用已建立。当我们在树视图中更改任何这些项目时,或者在它们后面具有不同视图模型的打开视图中时,问题就会起作用。我们需要一种方法来在两者之间建立一个共同的相关视图模型 – jclarkson 2014-10-28 15:36:49