在不同视图之间传递数据

时间:2012-04-25 15:38:13

标签: c# wpf mvvm routed-events routedevent

我正在根据MVVM模型在C#中编写WPF应用程序。 我有一个MainWindow,它包含几个视图:MenuView,ContentView1,ContentView2 ,. 。 。等等。

MenuView,ContentView1,ContentView2。 。 。,XAML树中的所有堂兄弟(而不是烦恼)。

MenuView包含几个按钮。每个按钮都有一个唯一的ID。内容视图(所有这些视图)应该接收所选(单击)按钮的菜单ID。 即,当单击MenuView中的按钮时,我想将其ID传递给ContentsViews1,ContentsViews2等等。

我不确定在视图之间传递数据的最佳方法是什么。

我想将事件处理程序附加到驻留在MenuView中的所有菜单按钮。处理程序在MainWindow类(根视图)中实现。 此处理程序将为所有子视图引发RoutedEvent(带有tunnel选项)。

有更好的方法吗? 这是考虑性能问题的最佳方式吗?

2 个答案:

答案 0 :(得分:0)

这种方法让我想起了我过去的java经历,你传递了某种动作串!给听众。

您将所有按钮绑定到一个处理程序?根据Id,您想在子视图中执行操作吗?

如果是,您应该将所有按钮绑定到它自己的ICommand并在处理程序委托内执行操作。

答案 1 :(得分:0)

您可以让MenuViewModel公开其他(感兴趣的)ViewModel订阅的事件。然后,每个View都可以绑定相应的事件并执行它需要做的事情。

这留下了一个问题,即每个感兴趣的ViewModel如何检测MenuViewModel的存在,以便它可以订阅它的事件,但如果没有更多关于你的应用程序和你选择的MVVM框架的知识就无法真正回答这个问题。