我是Windows Store应用程序开发的新手。目前,我正在研究使用c#在xamls之间传递和接收参数。

有人可以通过一些示例来帮助解释LoadState()navigationHelper_LoadState()之间的区别吗?我应该去哪接收参数?

最佳答案

因此,NavigationHelper.LoadState需要两件事:


OnNavigatedTo当此页面即将在框架中显示时调用。
NavigationMode.New导航到页面的新实例(不是前进或后退)


MSDN说:


  除了提供前面描述的实现之外,还需要从在每个页面上实现的OnNavigatedTo()和OnNavigatedFrom()事件处理程序中调用NavigationHelper。发生这些事件时,NavigationHelper调用LoadState()和SaveState()的特定于页面的实现。您可以在每个页面上自定义这些功能的实现。应分别使用它们代替OnNavigatedTo()和OnNavigatedFrom()。


原始代码是:

public void OnNavigatedTo(NavigationEventArgs e)
{
    var frameState = SuspensionManager.SessionStateForFrame(this.Frame);
    this._pageKey = "Page-" + this.Frame.BackStackDepth;
    if (e.NavigationMode == NavigationMode.New)
    {
        var nextPageKey = this._pageKey;
        int nextPageIndex = this.Frame.BackStackDepth;
        while (frameState.Remove(nextPageKey))
        {
            nextPageIndex++;
            nextPageKey = "Page-" + nextPageIndex;
        }
        if (this.LoadState != null)
        {
            this.LoadState(this, new LoadStateEventArgs(e.Parameter, null));
        }
    }
    else
    {
        if (this.LoadState != null)
        {
            this.LoadState(this, new LoadStateEventArgs(e.Parameter, (Dictionary<String, Object>)frameState[this._pageKey]));
        }
    }
}


出于您的问题,除非您像this blog这样定义自己,否则不会覆盖LoadState()。他只是这样做:

private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
    LoadState(e);
}

private void navigationHelper_SaveState(object sender, SaveStateEventArgs e)
{
    SaveState(e);
}

protected virtual void LoadState(LoadStateEventArgs e) { }
protected virtual void SaveState(SaveStateEventArgs e) { }


看,它们是相同的。它们之间没有什么不同,除了执行管道可能会稍微影响时序,但不太可能。最后,没有真正的区别。需要相互使用的人...他们必须弄错了,将原因归因于其他因素。

祝你好运。

10-04 17:46