2011-04-26 36 views
0

我正在开发一个Prism应用程序,我需要在应用程序加载后在后台模型中加载一些数据。我有一个隐藏的单独视图,可以通过视图模型显示这些数据。我不想增加应用程序加载时间,也不想增加视图加载时间。我能想到的唯一解决方案是引发一个Shell Loaded事件,并让视图模型或模型订阅它。在后台加载模型数据

这是一个好方法还是有更好的方法?

此外,我不确定是否应该在BootstrapperRunShell ViewModel中提高Shell Loaded事件。我如何链接路由命令(例如:加载)到一个ICommand

回答

1

我尽量避免在引导程序中处理这些事件。因此,将shell视图的Loaded事件附加到shell视图模型是一个好方法。在引导程序中实际引发此事件的唯一原因是如果您需要StartupEventArgs(我有时会这样做)。

处理加载事件的方法有很多。

  • 100%MVVM使用将事件直接传递给ICommand或方法的附加属性。例如:how to call a window's Loaded event in WPF MVVM?
  • 只需在后面的代码中处理Loaded事件,并从那里调用VM中的Loaded方法/命令。这是一个简单易行的解决方案。
0

为了减少加载时间,您应该尽量避免在UI线程上做太多工作。您可能想要调查TPL或称为ReactiveUI的一个很好的框架,它提供了一个非常方便的机制来异步加载事物。