wpf c# кэширование страниц

Есть MainWindow - окно с авторизацией, после успешной авторизации тебя перекидывает в окно game, оттуда ты можешь попасть в окно shop, а из него обратно в game. Проблема в том, что я пытаюсь кэшировать эти страницы, но из-за этого вылезает ошибка

System.StackOverflowException: "Выдано исключение типа "System.StackOverflowException"."

как я понимаю я где-то накосячил с ссылками на страницы из-за чего оно бесконечно туда сюда переходит возможно, но я честно говоря не знаю

вот мой код Класс менеджер страниц(недоработан для shop из-за текущей проблемы)

public static class PageManager
{
    public static game GameInstance;
}

MainWindow:

            if (PageManager.GameInstance == null)
            {
                MainFrame.Navigate(PageManager.GameInstance = new game());
            }
            else
            {
                MainFrame.Navigate(PageManager.GameInstance);
            }

game:

public partial class game : Page
{
    // создаем страницы для перехода по ним
    public Page shop = new shop();
    public game()
    {
        InitializeComponent();
        if (DataBase.IsAdmin(DataBase.account_id.ToString()))
        {
            AdminPanel.Visibility = Visibility.Visible;
        }
    }

shop:

private void back_btn_Click(object sender, RoutedEventArgs e)
{
    ShopFrame.Navigate(PageManager.GameInstance);
}

Ответы (1 шт):

Автор решения: DmitriySidyakin

Для увеличения стека мне помогло:

Самый простой способ установить размер стека начиная с .NET 2.0 и Win XP - создать новый поток с желаемым размером стека:

using System.Threading;

Thread T = new Thread(threadDelegate, stackSizeInBytes);
T.Start();

Чтобы изменить размер стека всей программы, вам придется использовать editbin:

EDITBIN.EXE /STACK:<stacksize> file.exe

(Перевод ответа Andrew O'Reilly)

Это помогло мне, программа больше не зависает, только долго работает.

→ Ссылка