我是MVVM中的新成員。我只是學習這種模式,並希望在我的項目中使用它。我已經瞭解了這種模式的工作原理,並學會了如何使用Commands。但我有問題如何處理另一個控件的事件,例如ListBox SelectionChanged事件。列表框沒有命令屬性如何處理MVVM中的事件
回答
你經常不需要。例如,你可以綁定ListBox
的SelectedItem
財產的財產在你的視圖模型:
<ListBox ItemsSource="{Binding Customers}" SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/>
這不僅讓您使用您的視圖模型所選擇的客戶,這也讓您的視圖模型通過設置屬性本身來指定選定的客戶。
還有其他技術可以「避免」直接處理代碼隱藏事件。例如,附加的行爲。但是,如果代碼只關注視圖並簡化代碼,則不應該擔心直接處理事件。
有趣的想法。例如,我想要處理DataGrid上的Mouse RightClick事件。在這種情況下,我必須在代碼後面編寫處理程序嗎?還是必須使用附加的行爲? – Polaris 2010-08-24 07:08:26
@寶來。看看那裏的mvvm框架(cinch,mvvm light ...)。您會發現像EventToCommand Behavior這樣的實現,您可以將事件綁定到命令。並且像肯特說的那樣:在編碼視圖相關的東西時,隨意使用codebehing :)例如BringToView在網格或列表框中選擇的項目 – blindmeis 2010-08-24 07:28:19
+1,以便處理僅影響視圖層的事件的註釋。很多人都忘記了這一點...... – 2010-08-24 15:14:47
要向控件添加命令屬性,它必須從ICommandSource繼承。 檢查this後,看看它是如何完成的。
的BookLibraray應用的WPF Application Framework (WAF)展示瞭如何傾聽WPF事件模型 - 視圖 - 視圖模型(MVVM)設計的應用程序。它允許用戶選擇多本書,以便他可以一次刪除所有的書。請參閱BookLibrary.Presentation.Views.BookView類。
- 1. 事件處理MVVM WinRT
- 2. 事件處理和MVVM
- 3. MVVM中的DataGrid事件處理
- 4. MVVM中的簡單事件處理
- 5. 如何處理MVVM ViewModel中的「SelectedItemChanged」事件?
- 6. MVVM處理MouseDragElementBehavior的Drag事件
- 7. Wpf MVVM如何在ViewModel中處理TextBox「粘貼事件」
- 8. MVVM - 查看加載和事件處理
- 9. Window.Closing事件處理程序MVVM
- 10. WPF:如何處理模型中的事件以動態更新MVVM中的xaml
- 11. 如何在MVVM的上下文中處理DataGrid中的Header點擊事件?
- 12. 你如何處理MVVM中的ComboBox SelectionChanged?
- 13. 在WPF MVVM項目中處理Viewmodel中的鼠標事件
- 14. 在ViewModel中處理CheckBox的Checked和Uncheck事件Silverlight MVVM
- 15. 實施中的ViewModel事件處理器與MVVM WPF
- 16. MVVM在Silverlight中連接事件處理程序的方式
- 17. 如何處理事件中的異常?
- 18. 如何處理C#中的SlideShowBegin事件#
- 19. 如何處理jQuery中的事件?
- 20. 如何處理WPF DataTemplate中的事件?
- 21. 如何在MVVM模式下處理viewmodel中的wpf datagrid MouseMove事件?
- 22. 事件處理,如何鏈接事件
- 23. 如何處理事件鏈
- 24. Java中的事件處理與C#中的事件處理
- 25. 在Azure事件中心中如何處理不同的事件?
- 26. 在MVVM中打開窗口時處理鼠標點擊事件
- 27. 如何在Windows C++中處理事件
- 28. 如何在Opencart中處理事件?
- 29. 如何在Javascript中處理ActiveX事件
- 30. 如何在Global.asax中處理事件SessionSecurityTokenReceived?
我還沒有使用它,但是您可能能夠使用CollectionView或CollectionViewSource在各種集合類型控件上啓用MVVM。 – 2010-08-24 07:10:07