我目前在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