Я видел другой вопрос, поэтому я полагаю, вы используете mvvm. Я достигаю этого, создав RootPage с сеткой и рамкой навигации. Я установил RootVisual на RootPage. Я связываю источник фреймов навигации с переменной в RootPageVM, затем в конструкторе RootPageVM вы можете установить источник фрейма либо MainPage, либо LoginPage на основе аутентификации пользователя. RootPageVM также может получать сообщения для управления дальнейшей навигацией, например выходом из системы.
Использование MVVM-Light.
Итак, в RootPageView (установленном как RootVisual), что-то вроде:
public RootPageViewModel()
{
Messenger.Default.Register<NotificationMessage>
(this, "NavigationRequest", Navigate);
if (IsInDesignMode)
{
}
else
{
FrameSource =
WebContext.Current.User.IsAuthenticated ?
"Home" :
"Login";
}
}
и способ навигации:
private void Navigate(NotificationMessage obj)
{
FrameSource = obj.Notification;
}
В LoginViewModel:
if (loginOperation.LoginSuccess)
{
Messenger.Default.Send
(new NotificationMessage(this, "Home"), "NavigationRequest");
}