2017-02-17 36 views
-1

我正在創建一個.net WPF應用程序,它是一個儀表板。 我需要能夠在儀表板上的不同視圖模型之間傳達事件。 這對我來說感覺就像一個酒吧/子事件模型。如何在.Net WPF MVVM應用程序中的ViewModels之間傳遞事件?

實現適合MVVM框架的解決方案的最佳方法是什麼? 我開始關注Prism,但是我想知道這是否足以滿足我的需求。

有人可以推薦一個最佳實踐方法,並指向我一些簡單的 實施的例子嗎?

感謝, JohnB

+1

我認爲[MVVM Light](https://mvvmlight.codeplex.com/)有一個基於消息的事件系統,它可能比Prism更適合您的需求。 –

+1

您正在尋找一個事件聚合器。 –

回答

1

請參考下面的博客帖子有關如何使用事件聚合模式以鬆散耦合的方式視圖模型之間進行通信:https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-pattern-to-communicate-between-view-models/

這應該回答你的問題。

另一種選擇是使用共享服務:https://social.msdn.microsoft.com/Forums/en-US/22907a0f-d805-4195-8272-7c284b72d2ee/example-of-using-shared-services-prism?forum=wpf

還有就是如何使用EventAggregator類Prism中的最新版本可在GitHub上的例子:https://github.com/PrismLibrary/Prism-Samples-Wpf/tree/master/EventAggregation

0

的MVVM,我肯定會更喜歡使用MVVMLIGHTLIBS。首先,有一個EventTrigger功能,在這裏你可以做鼠標按下,鼠標鬆開,的SelectionChanged,等等。它使你的生活變得更加簡單,當你試圖爲eventtrigger 實例綁定命令是:

<i:Interaction.Triggers> 
     <i:EventTrigger EventName="SelectionChanged"> 
      <i:InvokeCommandAction Command="{Binding MyCommand}" CommandParameter="{Binding ElementName=employeeListBox, Path=SelectedValue}"/> 
     </i:EventTrigger> 
     </i:Interaction.Triggers> 
    </ListBox> 

MyCommand將在您的viewmodel中使用relaycommand或commandhandler實現,無論您喜歡什麼。 此外,如果您想遵循MVVM模式,關於綁定clr屬性,依賴項屬性和控件的附加屬性的知識也非常重要。 有幾個例子,我想與大家分享: ----事件觸發--------- http://www.c-sharpcorner.com/blogs/example-of-eventtrigger-in-mvvm-application1 -----附加屬性和依賴屬性---- 總結: 附加屬性用於容器元素。例如,您可以擁有網格,然後您可以創建grid.rowdefinition和grid.columndefinition以使行和列的數量動態變化

依賴屬性是從DependencyObject派生的類的屬性,它們是特殊的因爲它不是簡單地使用一個後臺字段來存儲它們的值,而是在DependencyObject上使用一些輔助方法。

這些都是關於wpf和mvvm的基礎知識,涉及到模型,視圖和視圖模型。

相關問題