2016-04-26 33 views
0

具體來說,在這種情況下,應用程序本身就是收件人。我的思考過程是,在處理創建新視圖的場景時,這將允許視圖和視圖模型之間的最小可能聯繫:它們將嚴格處理消息,並且WPF應用程序的應用程序級別將處理這些消息,根據需要創建新的視圖(並通過這些視圖的DataContext隱式地查看模型)。從XAML註冊MVVM Light中應用程序級別的消息收件人?

據我所知,這足夠簡單,如果我進入代碼隱藏(app.xaml.cs)。不過,我最好喜歡在xaml中處理這個消息接收者註冊,如果可能的話,因爲行爲相當直接,所有它真正要做的就是調用ShowDialog來獲得適當的View(我認爲沒有進一步的處理是需要,但我可能會忘記一些東西)。 (我知道MVVM並不真的禁止使用代碼隱藏,而且我用這個讓自己變得更難,但是我認爲如果不違反其他MVVM原則,它可能會改善代碼組織)。當我考慮使用System.Windows.Interactivity並將EventTrigger綁定到Application類的Startup事件時,我想我已經擁有它了,但是當我發現它需要擴展DependencyObject以使其工作時被挫敗。

總之,我的問題是雙重的: 答:是否有可能在涉及創建視圖的消息子集的app.xaml中處理消息接收者註冊。 B.這是一個適當的結構來嘗試和應用,或者我的想法是關於如何組織處理與其他視圖相關的消息的責任。如果這不是一個合適的方法,有沒有更簡單的方法或更好的方法?

回答

0

View應該包含所有與視圖相關的代碼並且沒有程序邏輯 - 這是MVVM分離。如果您的視圖需要顯示消息框,則必須通過View中的代碼進行處理。這與動畫必須在View中定義相同,但在後面的代碼中可以更容易。

MVVMLight消息允許ViewModel說一個簡單的方法來說「我想展示這個」和View來決定如何展示它。 View註冊以接收所需的消息類型並處理顯示它的UI部分 - 不管是MessageBox還是其他。

純粹的XAML,也許更漂亮的方法是建立一個自定義消息框。

至於B部分:我會收到我想要處理它們的消息。

相關問題