【问题标题】:Windows Phone 8 SDK - Issue with screen locking, and application starting overWindows Phone 8 SDK - 屏幕锁定问题和应用程序重新启动
【发布时间】:2013-05-13 02:19:45
【问题描述】:

我有一个带有网络浏览器控件的应用程序。当我在该控件中导航然后走开一点,然后回到它(由于不活动而解锁屏幕后),第一个/原始页面再次出现。如何维护浏览器的状态?

【问题讨论】:

  • 您所描述的场景通常称为“墓碑”。您可以使用此关键字找到一些文档。我不确定处理您的问题的最佳方法是什么,但我想这涉及在停用应用程序时保存当前 webbrowser 的 URI,并在激活应用程序时恢复它。这不足以完全恢复浏览器的状态(例如,用户在表单中输入的内容会丢失),但我不知道是否有更好的方法。

标签: windows-phone-8 webbrowser-control


【解决方案1】:

在 App.xaml.cs 中定义一个公共属性 Url 来存储一个 Url

public Uri Url { get; set; }

在 WebBrowser_LoadCompleted 事件中:将包含当前加载的 Url 的 WebBrowser.Source 属性保存到 Application 类的 Url 属性之上。

App app = Application.Current as App; 
app.Url = WebBrowser.Source;

在 Application_Deactivated 事件中(将应用​​发送到后台),将当前应用的状态保存到 IsolatedStorage

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
settings["Url"] = Url;
settings.Save();

在 Application_Launching 事件(恢复应用)时,将存储的数据拉回

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
Url currentUrl;
if (settings.TryGetValue("Url", out currentUrl)) 
   Url = (Uri)settings["Url"];

然后从恢复的 Url 中,您可以重新加载上次导航的页面。

App app = Application.Current as App;
WebBrowser.Navigate(app.Url);

【讨论】:

    【解决方案2】:

    你可以试试这个:

    bool isNew = true;
    
    protected override void OnNavigatedTo(NavigationEventArgs e)
         {
            base.OnNavigatedTo(e);
            isNew = false;
    }
    

    此属性将一直保留到您的页面关闭,因此您可以使用它来测试这是否是您的页面第一次被导航到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多