Wpf 导航堆栈溢出

Wpf 导航堆栈溢出,wpf,navigation,frame,stack-overflow,Wpf,Navigation,Frame,Stack Overflow,我试图在允许导航到任何页面之前检查用户是否登录,如果没有,它将重定向到登录页面。我在一个框架元素中处理这一切 如果用户未登录,当前代码将创建一个无限循环。我可以调用它并向事件处理程序传递一个告诉它忽略的代码吗 public MainWindow() { InitializeComponent(); FrameWindow.Navigating+=FrameWindow_Navigating; } private v

我试图在允许导航到任何页面之前检查用户是否登录,如果没有,它将重定向到登录页面。我在一个框架元素中处理这一切

如果用户未登录,当前代码将创建一个无限循环。我可以调用它并向事件处理程序传递一个告诉它忽略的代码吗

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;
            }
        }

通过这样做修复。。。不确定这是否违反任何惯例

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;
        }
    }