使用MVVM(在我的情况下是MVVM Light)时,从App处理所有事件的首选方法是什么?因此,Application_Launching
,Application_Activated
,Application_Deactivated
和Application_Closing
等内容。
我的想法是在视图模型可以订阅的每个事件上广播一条消息。我的另一个想法是直接从App.xaml.cs
事件中调用视图模型上的方法。
答案 0 :(得分:0)
上面提到的那些事件与视图完全无关,因为视图要么被创建要么会被这些事件破坏。 这一点使得事件传播到ViewModel代码不一定是MVVM方式,主要是因为在这些事件提升时间中没有涉及View。 只是为了实现“关注分离”,你可以让MainViewModel(主要是单身)拥有所有4种方法并直接从App.xaml调用它。否则事件委托(信使)会更干净。 我假设你想对像IsolatedStorage或序列化/反序列化操作这些事件做一些常规操作。
答案 1 :(得分:0)
我将所有文件保存在单独的DLL中(App.Model.dll中的模型,App.Views.dll中的视图等等),因此主启动运行时中的代码非常少。我使用中央控制器和钩子应用程序级别事件,中央设置等特定于应用程序。