2013-08-02 110 views
0

我想每次当用户丢失其网络连接以转到应用程序的主页时。我发现DeviceNetworkInformation.NetworkAvailabilityChanged是我正在寻找的东西,但我不确定究竟应该在方法中添加哪些代码以及它如何正确工作。当我在主页面添加eventhandler比它对整个应用程序有效吗?我可以用NavigationService方法与Navigate方法吗?我在考虑如果我不在MainPage.xaml那么我会导航到这个页面,如果是的话,我会调用其他代码(用于设置某些控件的可见性等等)。这是做这件事的好方法吗?我可以检查活动页面的代码吗?由于Windows Phone - 丢失网络连接的事件处理程序

+0

您可以在Ap中订阅p.xaml.cs文件 –

+0

但我不能在App.xaml.cs.中使用NavigationService.Navigate。 –

+0

看看这个 http://stackoverflow.com/questions/3730245/silverlight-how-to-navigate-from-a-user-control-to-a-normal-page/4946688#4946688 – Waleed

回答

1

在你的App类有一行:

public PhoneApplicationFrame RootFrame { get; private set; } 

可以导航使用它:

private void GoToMainPage() 
{ 
    RootFrame(new Uri("View/MainPage.xaml", UriKind.Relative)); 
} 
0

安东说,什么是正确的,因为你可以很容易地从任何地方引用RootFrame您的代码将为您提供与来自PhoneApplicationPage的NavigationService相同的功能,并且这样您就不会仅限于页面内的代码才能导航。虽然我觉得他错过了.Navigate方法调用:

RootFrame.Navigate(new Uri("View/MainPage.xaml", UriKind.Relative)); 

,你也想引用在这种方式RootFrame:

(Application.Current.RootVisual as PhoneApplicationFrame).Navigate(...) 
+0

我得到“无效的跨线程访问。”错误,当我使用Dispatche.BeginInvoke我的应用程序只是崩溃。 –

+0

随着调度员我得到这个错误:“现在没有片段支持” –

0

我做的:

private bool InternetIsAvailable() 
    { 
     if (!NetworkInterface.GetIsNetworkAvailable()) 
     { 
      //MessageBox.Show("No tienes conexión de internet."); 

      return false; 
     } 
     else 
     { 
      //MessageBox.Show("Tienes conexión de internet."); 
      return true; 
     } 
    } 

但是,您可以使用此类NetworkChange并查看方法或事件NetworkAvailabilityChanged