C# WPF NavigationService每次创建新页面

C# WPF NavigationService每次创建新页面,c#,wpf,navigationservice,C#,Wpf,Navigationservice,我使用WPF NavigationService在我的应用程序中从一个页面导航到另一个页面,如下所示: private void Image_Forward_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (YesNo.Choice == "yes") { NavigationService.Navigate(new PageQuestion2Y

我使用WPF NavigationService在我的应用程序中从一个页面导航到另一个页面,如下所示:

    private void Image_Forward_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        if (YesNo.Choice == "yes")
        {
            NavigationService.Navigate(new PageQuestion2Yes());
        }
        else if (YesNo.Choice == "no")
        {
            NavigationService.Navigate(new PageQuestion2No());
        }
    }
我发现,如果我多次导航到一个页面,那么每次都会创建一个新的页面对象。(我注意到我在页面中添加了一个构造函数并显示了一个messagebox,我发现当主应用程序退出时,所有页面都会被销毁)


如何使用NavigationService,以便在我的应用程序的生命周期内只创建一个页面???

从您的代码中可以明显看出,您希望在导航后始终创建新的页面对象:

// Calling constructor manually.
NavigationService.Navigate(new PageQuestion2Yes());
NavigationService.Navigate(yesObject);
而是将对象存储在类级别字段中,并始终导航到该对象:

private PageQuestion2Yes yesObject = new PageQuestion2Yes();
现在在方法中,始终在导航时传递该对象:

// Calling constructor manually.
NavigationService.Navigate(new PageQuestion2Yes());
NavigationService.Navigate(yesObject);

从您的代码中可以明显看出,您希望在导航后始终有新的页面对象:

// Calling constructor manually.
NavigationService.Navigate(new PageQuestion2Yes());
NavigationService.Navigate(yesObject);
而是将对象存储在类级别字段中,并始终导航到该对象:

private PageQuestion2Yes yesObject = new PageQuestion2Yes();
现在在方法中,始终在导航时传递该对象:

// Calling constructor manually.
NavigationService.Navigate(new PageQuestion2Yes());
NavigationService.Navigate(yesObject);

从您的代码中可以明显看出,您希望在导航后始终有新的页面对象:

// Calling constructor manually.
NavigationService.Navigate(new PageQuestion2Yes());
NavigationService.Navigate(yesObject);
而是将对象存储在类级别字段中,并始终导航到该对象:

private PageQuestion2Yes yesObject = new PageQuestion2Yes();
现在在方法中,始终在导航时传递该对象:

// Calling constructor manually.
NavigationService.Navigate(new PageQuestion2Yes());
NavigationService.Navigate(yesObject);

从您的代码中可以明显看出,您希望在导航后始终有新的页面对象:

// Calling constructor manually.
NavigationService.Navigate(new PageQuestion2Yes());
NavigationService.Navigate(yesObject);
而是将对象存储在类级别字段中,并始终导航到该对象:

private PageQuestion2Yes yesObject = new PageQuestion2Yes();
现在在方法中,始终在导航时传递该对象:

// Calling constructor manually.
NavigationService.Navigate(new PageQuestion2Yes());
NavigationService.Navigate(yesObject);

那么,如果我调用NavigationService.Navigate(新Uri(xyz))它是否总是为我创建新页面?如果我调用NavigationService.Navigate(新Uri(xyz))它是否总是为我创建新页面?如果我调用NavigationService.Navigate(新Uri(xyz))它是否总是为我创建新页面?如果我调用NavigationService.Navigate(新Uri(xyz))它会为我创建一个新页面吗?