0

アプリケーションでページの廃棄を完了したところ、現在表示しているページのみを廃棄することに気付きました。つまり、バックスタック内のページを返した後、すべてのメンバーが失われ、廃棄されないということです。現在のページを tombstone する方法についてですが、バックスタックページを tombstone することについては何もありません...これを行うエレガントな方法は何ですか?

私がどのように墓石を作っているかを示すために:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    if (e.IsNavigationInitiator == false)
    {
        _tombstone = this.LoadState<Tombstone>("tombstone");
    }
    else
    {
        _tombstone.NavigationParameters = NavigationParameters;
    }
}


protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    if (_tombstone != null && e.IsNavigationInitiator == false)
        this.SaveState("tombstone", _tombstone);
}

    public static void SaveState(this PhoneApplicationPage phoneApplicationPage, string key, object value)
    {
        if (phoneApplicationPage.State.ContainsKey(key))
        {
            phoneApplicationPage.State.Remove(key);
        }

        phoneApplicationPage.State.Add(key, value);
    }

_tombstone には、廃棄後にページを再初期化する必要がある現在のページのすべての重要なメンバーが含まれています

4

1 に答える 1

0

各ページのデータを残すときに (NavigationMode != Back の場合)、別のページにあるときにアプリが廃棄され、スタック内の他のページにアクセスできないことがわからないため、データを保持する必要があります。墓石が発生します。

または、すべてを (スーパー ビュー モデルを使用して) 一元的に保存し、アプリケーション レベルで状態の永続性を処理することもできます。

于 2012-05-30T09:16:44.950 に答える