1

我用什么:

10 个网络浏览器的列表

tabIndex(当前浏览器的索引)

使用 NavigationService.GoBack() 访问主页的不同页面。

问题:

每次我使用 GoBack() 进入主页并导航时,导航事件将再触发 1 次。经过一些冲浪后,这是一个巨大的性能问题,但我不知道为什么会这样。

我在 OnNavigatedTo 中所做的事情:

如果 count != 10 则填充 webbrowserlist(全局列表,仅发生 1 次)

为每个浏览器设置事件(可能是问题,但无法想象为什么)

谢谢你的帮助。

4

1 回答 1

3

如果我理解您的问题,那么当您在页面之间来回导航时,webbrowsers Navigated 事件会触发越来越多的时间。

在没有看到代码的情况下,我会说问题是您每次导航回主页时都订阅了导航事件。您可以通过以下方式避免这种情况:

1)订阅主页面构造函数中的事件,因为它只被调用一次

2)如果您必须订阅页面 OnNavigatedTo 事件中的事件而不是之前进行此检查:

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
                        if (e.NavigationMode != NavigationMode.Back)
                        {
                           webbrowser.tap += someFunction;
                        }
    }

如果您每次导航到页面时都需要注册事件而不是以下内容:

  protected override void OnNavigatedFrom(NavigationEventArgs e)
    {
       webbrowser.tap -= someFunction;
    } 
于 2012-02-07T14:14:36.497 回答