C# 为什么调试器在这里说Frame.Content为null

C# 为什么调试器在这里说Frame.Content为null,c#,wpf,C#,Wpf,我已经习惯了WinForms,所以这不是我所期望的。在下面的代码中,ActiveView是一个框架,Register是Page。我想将注册页面加载到ActiveView中,然后更改按钮上的文本。即使页面加载,调试器也会在SetCloseButtonText中显示ActiveView.Content==null。为什么呢 private void btnRegister_Click(object sender, RoutedEventArgs e) { S

我已经习惯了WinForms,所以这不是我所期望的。在下面的代码中,ActiveView是一个框架,Register是Page。我想将注册页面加载到ActiveView中,然后更改按钮上的文本。即使页面加载,调试器也会在SetCloseButtonText中显示
ActiveView.Content==null
。为什么呢

private void btnRegister_Click(object sender, RoutedEventArgs e)
        {

            SwapActiveView(Register);
        }

        public void SwapActiveView(Page NewPage)
        {
            if (ActiveView.Content == null || !ActiveView.Content.Equals(NewPage))
            {
                if (ActiveView.Content != null)
                {
                    PreviousViews.Add((Page)ActiveView.Content);
                }
                ActiveView.Content = NewPage;
            }
            else
            {
                ActiveView.Content = NewPage;
            }

            SetCloseButtonText();
        }

        private void SetCloseButtonText()
        {
            if (PreviousViews.Count == 0 && ActiveView.Content == null)
            {
                tbCloseButton.Text = "Close";
            }
            else
            {
                tbCloseButton.Text = "Back";
            }

        }

我最终找到了答案。无论是调用navigate函数还是仅仅更改内容,框架都会异步导航。所以我只需要添加这个方法并调用我的函数

private void ActiveView_Navigated(object sender, NavigationEventArgs e)
    {
        SetCloseButtonText();
    }

你有没有仔细检查代码,看看发生了什么?在SwapActiveView的开始处放置一个断点,然后单击单步查看发生了什么。您确定NewPage不是空的吗?如果这些都没有帮助,那么您需要提供更多信息然后转到
SetCloseButtonText()这就是我困惑的地方。WPF是否有什么东西使得它在按钮点击功能完成之前不设置内容?你看过NewPage了吗?如果ActiveView.Content不为null且NewPage为null,则ActiveView.Content将设置为null,对吗?另外,您还应该看看SwapActiveView开头的ActiveView.Content。我也这么认为。SwapActiveView的第一个if语句具有ActiveView.Content=null,NewPage被设置为我要显示的页面的实例化。这一切都很好,只是在SetCloseButtonText调用中没有拾取内容。另外,如果我第二次调用SwapActiveView,内容设置为NewPage实例化,我假设单步执行代码有助于隔离问题。确实如此,但我需要更好地理解我使用的控件。谢谢你的帮助,谢谢。我不知道这是否会帮助任何人在未来,但它可能会。