【问题标题】:Windows Phone - event handler for lost network connectionWindows Phone - 丢失网络连接的事件处理程序
【发布时间】:2013-08-02 07:44:30
【问题描述】:

我想每次当用户失去他的网络连接时去应用程序的主页。我发现 DeviceNetworkInformation.NetworkAvailabilityChanged 是我正在寻找的东西,但我不确定我应该在方法中添加什么作为代码以及它是如何工作的。当我在主页中添加事件处理程序时,它是否适用于整个应用程序?我可以在那个方法中使用NavigationServiceNavigate 方法吗?我想以某种方式检查我是否不在MainPage.xaml 然后我将导航到此页面,如果是,则我调用其他代码(用于设置某些控件的可见性等)。这是这样做的好方法吗?我可以签入活动页面的代码吗?谢谢

【问题讨论】:

标签: c# windows-phone-7 windows-phone-8 connectivity


【解决方案1】:

在您的 App 类中有一行:

public PhoneApplicationFrame RootFrame { get; private set; }

您可以使用它进行导航:

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

【讨论】:

    【解决方案2】:

    Anton 所说的是正确的,因为您可以轻松地从代码中的任何位置引用该 RootFrame,这将为您提供与 PhoneApplicationPage 中的 NavigationService 相同的功能,这样您就不再局限于按顺序在页面中编写代码导航。虽然我认为他错过了 .Navigate 方法调用:

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

    而且您还想以这种方式引用 RootFrame:

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

    【讨论】:

    • 我得到“无效的跨线程访问”。错误,当我使用 Dispatche.BeginInvoke 时,我的应用程序崩溃了。
    • 使用调度程序时出现此错误:“现在不支持片段”
    【解决方案3】:

    我愿意:

        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

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 2013-03-28
      相关资源
      最近更新 更多