我正在制作的应用程序需要在导航到第一页(MainView.xaml)之前从json REST服务获取一些数据。对viewmodels发出请求的控制器类有一些静态列表,这些列表可帮助映射ID(自上次运行以来可能已更改),以便稍后为viewmodel生成REST请求。初始化MainView时,它会立即调用来自此控制器类的信息,这会因为尚未加载ID映射而失败。因此我加载了一个名为LoadingScreen的视图。此视图运行控制器的方法,该方法映射ID,然后将应用程序的视图导航到MainView。
public LoadingScreen()
{
Dispatcher.BeginInvoke(TVController.populateMaps);
InitializeComponent();
}
映射ID后,控制器执行此操作
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
(Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/View/MainView.xaml", UriKind.Relative));
});
但我想避免暂时观看,原因有两个:
我一直在寻找替代方法,我已经设法阻止WMAppManifest.xml的默认任务导航到LoadingScreen(在App.xaml.cs中)。但是我在控制器类中的断点似乎表明当我从App.xaml.cs运行它时,它的PopulateMaps方法和异步请求都没有做。这是我尝试过的其他内容:
public App()
{
//INITIALIZING THE ELEMENTARY STUFF .......
RootFrame.Navigating += new NavigatingCancelEventHandler(RootFrame_Navigating);
}
void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e)
{
e.Cancel = true;
TVController.populateMaps();
}
我想找到的是一种避免临时加载屏幕的方法。