WPF中页面和窗口之间的导航



我有一个问题,我试图解决。我有两个WPF窗口。那些窗口存放着有内容的页面。我的问题不是导航页到页,而是窗口到窗口。下面是一个示例代码:

LoginPortal Design

<Grid>
<Frame x:Name="MainFrame" NavigationUIVisibility="Hidden"/>
</Grid>

LoginPortal Code

public LoginPortalMain()
{
InitializeComponent();
MainFrame.Navigate(new Uri("/Pages/LoginPortal.xaml", UriKind.RelativeOrAbsolute));

}

这是我的登录门户,房子4个按钮。每个按钮打开第二个窗口,其中包含几个页面。

private void BtnSales_Click(object sender, RoutedEventArgs e)
{
var w = Application.Current.Windows[0];
w.Hide();
MainWindow mn = new MainWindow();
mn.Content = new SalesPage();
mn.Show();
}

当点击此按钮时,将打开第二个WPF窗口,其中包含多个页面。导航没有问题。问题开始时,我从主窗口连接关闭事件回到LoginPortalMain

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
LoginPortalMain lgm = Application.Current.MainWindow as LoginPortalMain;
lgm.Show();
}

然后又回到起点。现在我的问题是,如果我再次点击同一个按钮。它只是复制了所有东西。然后在关闭任何东西时,它只会添加新的窗口。如果我退出任何窗口,它会在下图中抛出一个错误。我的问题是,有没有一种方法来处理导航一旦主窗口被关闭。因此,一旦您第二次关闭主窗口,就不会有重复的窗口。我以前在单个窗口上使用过导航,但没有在多个窗口上使用过。

我可能不得不重新考虑整个结构,并使用自定义UserControls,并找出从Pages到UserControls的动画序列。然而,任何帮助都将是非常感激的。

输入图片描述

输入图片描述

输入图片描述

输入图片描述

输入图片描述

如果您只想打开新窗口的一个实例,请尝试显示和隐藏单个窗口实例。

当打开窗口按钮被按下时,如果需要创建窗口并显示它

private OtherWindow mOtherWindow;
private void OpenWindowButtonClick(object sender, RoutedEventArgs e)
{
mOtherWindow ??= new OtherWindow(); //initialize child window on first call
mOtherWindow.Show();
}

当另一个窗口关闭时隐藏它并取消关闭请求。您还可以在下次显示时在这里重置其他窗口状态。

private void OtherWindowClosingEvent(object sender, System.ComponentModel.CancelEventArgs e)
{
((Window)sender).Hide();
Application.Current.MainWindow.Activate();
e.Cancel = true;
}

最新更新