1

我正在制作的应用程序需要在导航到第一页 (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));
});

但出于两个原因,我想避免临时查看:

  1. 后退按钮稍后将用户引导至此页面
  2. 这是糟糕的编码。我只想篡改 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();
}

我想找到一种避免出现临时加载屏幕的方法。

4

0 回答 0