我正在制作的应用程序需要在导航到第一页 (MainView.xaml) 之前从 json REST 服务获取一些数据。向视图模型发出请求的控制器类有一些静态列表,可帮助映射 ID(自上次运行以来可能已更改),用于稍后为视图模型生成 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));
});
但出于两个原因,我想避免临时查看:
- 后退按钮稍后将用户引导至此页面
- 这是糟糕的编码。我只想篡改 SplashScreen 图像。
我一直在寻找这样做的替代方法,并且我设法阻止了 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();
}
我想找到一种避免出现临时加载屏幕的方法。