Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mvvm 在后台加载模型数据_Mvvm_Prism - Fatal编程技术网

Mvvm 在后台加载模型数据

Mvvm 在后台加载模型数据,mvvm,prism,Mvvm,Prism,我正在开发一个Prism应用程序,在应用程序加载后,我需要在后台加载模型中的一些数据。我有一个单独的视图,它是隐藏的,可以通过视图模型显示这些数据。我不想增加应用程序加载时间,也不想增加视图加载时间。我所能想到的唯一解决方案是引发一个Shell加载的事件,并让视图模型或模型订阅它 这是一个好方法还是有更好的方法 另外,我不确定是否应该在引导程序的运行中或在Shell ViewModel中引发Shell Loaded事件。如何将路由命令(对于ex:Loaded)链接到ICommand我尽量避免在引

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

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


另外,我不确定是否应该在
引导程序的
运行
中或在
Shell ViewModel
中引发
Shell Loaded
事件。如何将路由命令(对于ex:Loaded)链接到
ICommand
我尽量避免在引导程序中处理此类事件。因此,将shell视图的已加载事件附加到shell视图模型是一个很好的方法。在引导程序中实际引发此事件的唯一原因是您是否需要StartupEventArgs(我有时会这样做)

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

  • 100%MVVM使用附加属性将事件直接传递给ICommand或方法。例:
  • 只需在代码隐藏中处理加载的事件,并从那里调用VM中加载的方法/命令。这是一个简单易用的解决方案

为了减少加载时间,您应该尽量避免在UI线程上做太多工作。您可能需要研究或一个名为的漂亮框架,它提供了一个非常方便的机制来异步加载东西