此UI由Main.xaml組成,其中包含一個包含(Person.xaml)的導航框架,因此涉及兩個不同的視圖模型。Silverlight - 視圖模型之間的通信
我想被點擊Main.xaml菜單時,DataGrid的內容進行過濾。
- 人物(顯示所有)
- 分數低於50
我的方法是通過具有PersonViewModel使用MVVM光消息
如果有更好的方法解決這個問題,我不願意爲所有的場景實現MvvmLight消息傳遞,其中來自不同視圖模型的UI元素需要進行通信。
此UI由Main.xaml組成,其中包含一個包含(Person.xaml)的導航框架,因此涉及兩個不同的視圖模型。Silverlight - 視圖模型之間的通信
我想被點擊Main.xaml菜單時,DataGrid的內容進行過濾。
我的方法是通過具有PersonViewModel使用MVVM光消息
如果有更好的方法解決這個問題,我不願意爲所有的場景實現MvvmLight消息傳遞,其中來自不同視圖模型的UI元素需要進行通信。
對於這樣的簡單場景,使用幾個ViewModels似乎不太合適。 我相信你應該直接在PersonViewModel中插入過濾器選項
這只是一個例子,真正的應用程序將在導航中有幾個視圖:Frame,所以左邊的菜單將不得不與任何viewmodels中的導航視圖:Frame被綁定到。 – Kman
我們也使用MVVM燈。從我的理解你的要求。您可能只需使用一個DomainContext,然後將所有實體加載到它,然後查詢每個單擊項目的上下文。
一旦你有一個上下文,你基本上可以動態地查詢它。這是來自我的一個代碼的東西。
GetUserBUGroups = SecurityDomainContext.Current.UserBUGroups.Where(ub => ub.UserID == GetUsers.UserID).OrderBy(o => o.BUGroup.BUGroupDesc).ToList();
有趣的方式來解決問題!我從來沒有想過這是一個可能的解決方案:) – Kman
在路由事件骨幹Silverlight的缺乏界面,這可以很好地實現上WPF通過傳遞'IInputElement'上視圖模型的構造,然後用它來傳遞消息ANYWHERE(視圖/視圖模型)。看到這裏的想法http://stackoverflow.com/a/11068208/212706 – ktutnik