WPF c# DataContext, Page

Пытался сделать панель авторизации. В главном окне есть панель, в этой панели есть Frame, с его помощью буду менять Page. Пытался сделать ViewModel и поставить его DataContext к окну, сам переход планировал сделать через Frame, но столкнулся с проблемой. У меня есть 2 Page: LoginPage и RegistrationPage. У них по идее должены быть свои ViewModel'и. В главной ViewModel'и есть свойство CurrentPage. Как это свойство передать в другие ViewModel'и? И если это возможно, то как я могу ко всем Page'ам и главному окну присобачить один и тот же DataContext? Когда я прописываю всем один и от же DataContext, то вылезает StackOverFlow Exception.

ViewModel

 {
        public AuthViewModel()
                 {
                   
                 }
                public event PropertyChangedEventHandler PropertyChanged;
                public void OnPropertyChanged([CallerMemberName] string prop = "")
                {
                    if (PropertyChanged != null)
                        PropertyChanged(this, new PropertyChangedEventArgs(prop));
                }
        
                private Page _currentpage;
        
                public Page CurrentPage
                {
                    get { return _currentpage; }
                    set
                    {
                        _currentpage = value;
                        OnPropertyChanged("CurrentPage");
                    }
                }
        
                     
                private RelayCommand addCommand;
                public RelayCommand Registration
                {
                    get
                    {
                        return addCommand ??
                            (addCommand = new RelayCommand(obj =>
                            {
                                CurrentPage = new RegistrationPage();
                            }));
                    }
                }
        
                private RelayCommand addCommand2;
                public RelayCommand LogIn
                {
                    get
                    {
                        return addCommand2 ??
                            (addCommand2 = new RelayCommand(obj =>
                            {
                                CurrentPage = new LoginPage();
                            }));
                    }
                }
            }
    }

MainView

<Window x:Class="Progect1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Progect1"
        xmlns:avm="clr-namespace:Progect1.ViewModels"
        xmlns:tb="http://www.hardcodet.net/taskbar"    
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
        mc:Ignorable="d"
        Title="MainWindow" Height="480" Width="506.522"
        WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize" WindowStyle="None">

    <Window.DataContext>
        <avm:AuthViewModel/>
    </Window.DataContext>

    <Window.Resources>
        <ContextMenu x:Key="Menu" Background="White">
            <MenuItem Header="Показать/Скрыть" Click="AppShow"/>
            <MenuItem Header="Выйти" Click="AppExit" />
        </ContextMenu>
    </Window.Resources>

    <Grid Background="#FF36393F">
        <Grid x:Name="AuthGrid" >
            <Frame Content="{Binding CurrentPage}" NavigationUIVisibility="Hidden">

            </Frame>
        </Grid>
        <local:NaviBar HorizontalAlignment="Left" Height="20.667" Margin="416.534,0,-0.532,0" VerticalAlignment="Top" Width="90.52"/>
        <local:PanelMove HorizontalAlignment="Left" Height="20" VerticalAlignment="Top" Width="416.534"/>
    </Grid>
</Window>

View LoginPage

<Page x:Class="Progect1.Views.Auth.LoginPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:Progect1.Views.Auth" 
      xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
      xmlns:lt="clr-namespace:Progect1"
       xmlns:dc="clr-namespace:Progect1.ViewModels"
      mc:Ignorable="d" 
      Title="LoginPage">

    <Grid>
        <Border CornerRadius="12" Padding="2" BorderThickness="1" Background="#FF202225" Margin="117,0,117.522,62.283" Height="292" VerticalAlignment="Bottom" Grid.ColumnSpan="2">
            <Grid >
                <TextBlock HorizontalAlignment="Left" Height="23.333" TextWrapping="Wrap" Text="Логин" VerticalAlignment="Top" Width="266" FontFamily="Segoe UI Symbol" FontWeight="Bold" TextAlignment="Center" FontSize="20" Foreground="#FFB9B9B9" Margin="0,17.003,0,0"/>
                <TextBlock HorizontalAlignment="Left" Height="27.333" Margin="0,87.819,0,0" TextWrapping="Wrap" Text="Пароль" VerticalAlignment="Top" Width="266" FontFamily="Segoe UI Symbol" FontWeight="Bold" TextAlignment="Center" FontSize="20" Foreground="#FFB9B9B9"/>
                <lt:LoginButton Height="48" Margin="53,195.664,52,0" Width="Auto" VerticalAlignment="Top"/>
                <lt:TextBoxCustom2 Height="26.5" Margin="18.148,45,17,0" VerticalAlignment="Top">
                </lt:TextBoxCustom2>
                <lt:TextBoxCustom2  Height="26.5" Margin="18.148,118.343,17,0" VerticalAlignment="Top"/>
                <lt:LinkLabel Text="Зарегистрироваться" HorizontalAlignment="Left" Height="17.821" Margin="115.146,248.664,0,0" VerticalAlignment="Top" Width="115">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Click">
                            <i:InvokeCommandAction Command="{Binding Registration}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </lt:LinkLabel>
            </Grid>
        </Border>
    </Grid>
</Page>

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