2014-12-22 4 views
0

Я пытаюсь проверить, вошел ли пользователь в систему, прежде чем разрешить навигацию на любые страницы, если не будет перенаправлен на страницу входа. Я работаю над этим внутри элемента рамки.WPF. Переполнение переполнения стека

Текущий код создает бесконечный цикл, если пользователь не вошел в систему. Могу ли я его вызвать, а также передать обработчик события, который говорит ему игнорировать .navigate для этой одной строки?

public MainWindow() { 
      InitializeComponent(); 
      FrameWindow.Navigating+=FrameWindow_Navigating; 
     } 

     private void FrameWindow_Navigating(object sender, NavigatingCancelEventArgs e) { 
      try { 
       if (UserLoggedIn()) { 
        //continue 
       } 
       else { 
        Uri uri = new Uri("Login.xaml", UriKind.Relative); 
        FrameWindow.NavigationService.Navigate(uri); 
       } 
      } 
      catch (Exception ex){ 
       throw ex; 
      } 
     } 

ответ

0

Исправлено из-за этого ... не уверен, что это противоречит любым соглашениям или нет?

private void FrameWindow_Navigating(object sender, NavigatingCancelEventArgs e) { 
      try { 
       bool alreadyHeadingToHome = false; 

       if (e.ExtraData != null){ 
        alreadyHeadingToHome = (bool)e.ExtraData; 
       } 

       if (UserLoggedIn() || alreadyHeadingToHome) { 
       } 
       else { 
        Uri uri = new Uri("Login.xaml", UriKind.Relative); 
        FrameWindow.NavigationService.Navigate(uri, true); 
       } 
      } 
     catch (Exception ex){ 
      throw ex; 
     } 
    } 
Смежные вопросы