如何从 WPF 中的第一个窗口打开第二个窗口?

我是 WPF 的新人。我有两个窗口,例如 window1和 window2。我在窗口1有一个按钮。如果我点击那个按钮,窗口2必须打开。我该怎么做?

下面是我试过的代码:

window2.show();
421587 次浏览

假设第二个窗口被定义为 public partial class Window2 : Window,您可以通过:

Window2 win2 = new Window2();
win2.Show();

您可以在 window1中创建一个按钮并双击它。它将创建一个新的 click 处理程序,在其中你可以写下如下内容:

var window2 = new Window2();
window2.Show();
private void button1_Click(object sender, RoutedEventArgs e)
{
window2 win2 = new window2();
win2.Show();
}

创建了新的 WPF 应用程序后,应该有一个。Xaml 文件和一个。Cs 文件。这些代表您的主窗口。创建一个额外的.xaml 文件和.cs 文件来表示您的子窗口。

MainWindow.xaml

<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Open Window" Click="ButtonClicked" Height="25" HorizontalAlignment="Left" Margin="379,264,0,0" Name="button1" VerticalAlignment="Top" Width="100" />
</Grid>
</Window>

Mainwindow.xaml.cs

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}


private void ButtonClicked(object sender, RoutedEventArgs e)
{
SubWindow subWindow = new SubWindow();
subWindow.Show();
}
}

然后向这些类添加您需要的其他代码:

SubWindow.xaml
SubWindow.xaml.cs

window1写代码。

private void Button_Click(object sender, RoutedEventArgs e)
{
window2 win2 = new window2();
win2.Show();
}

在 WPF 中,通过使用 Show ()和 ShowDialog ()方法,我们有两个选项。

如果你想在新窗口打开时关闭打开的窗口,那么你可以使用 Show ()方法:

Window1 win1 = new Window1();
win1.Show();
win1.Close();

ShowDialog ()也会打开一个窗口,但在这种情况下,您无法关闭先前打开的窗口。

您可以使用以下代码:

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
NavigatedWindow navigatesWindow = new NavigatedWindow();
navigatesWindow.ShowDialog();
}

您将需要创建一个新窗口的实例,如下所示。

var window2 = new Window2();

一旦有了实例,就可以根据需要使用 秀()ShowDialog ()方法。

window2.Show();

或者

var result = window2.ShowDialog();

如果需要,ShowDialog ()将返回 Nullable<bool>

这对我有帮助: Owner 方法基本上将窗口绑定到另一个窗口,以防您需要具有相同窗口的额外窗口。

LoadingScreen lc = new LoadingScreen();
lc.Owner = this;
lc.Show();

你也考虑一下。

this.WindowState = WindowState.Normal;
this.Activate();