2011-03-20 47 views
1

当使用MVVM(我的情况为MVVM Light)时,处理应用程序中所有事件的首选方法是什么?所以,诸如Application_Launching,Application_Activated,Application_DeactivatedApplication_Closing之类的东西。使用MVVM处理应用程序事件的首选方法

我的想法是在视图模型可以订阅的每个事件上广播消息。我的另一个想法是直接从App.xaml.cs事件调用视图模型的方法。

+0

我会倾向于'Messenger'方法 – svrist 2011-03-20 20:54:02

+0

svrist:为什么?任何特定的原因? – 2011-03-20 21:00:44

+0

对我来说,messenger方法似乎是最“干净”的:)对不起,我无法更好地对其进行限定 – svrist 2011-03-21 09:56:30

回答

0

上面提到的那些事件与View完全没有关系,因为视图要么被创建,要么被这些事件破坏。 这一点使得传播给ViewModel代码的事件不需要是MVVM方式,主要是因为在这些事件引发时间中没有涉及View。 只是为了实现这个'分离关注',你可以让你MainViewModel(大多数单身)拥有所有4个方法,并直接从App.xaml调用它。否则一个事件代表(信使)会更干净。 我假设你想对IsolatedStorage或序列化/反序列化操作等事件进行一些常规操作。

+0

我提到的事件中没有涉及视图模型,但这些事件将导致视图模型保存或加载它们的状态在哪个事件发生。至于你所说的关于分离关注的问题,你几乎只是重复我在我的问题中所说的话。 – 2011-03-20 23:06:14

0

我将所有文件保存在独立的DLL中(App.Model.dll中的模型,App.Views.dll中的视图等),因此主引导运行时中的代码非常少。我使用中央控制器和挂钩应用程序级别的事件,中央设置等,它是应用程序特定的。

相关问题