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


125

我是WPF的新手。我有两个窗口,例如window1和window2。我在window1中有一个按钮。如果单击该按钮,则必须打开window2。我该怎么办?

这是我尝试的代码:

window2.show();

Answers:


237

用编写代码window1

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

我可以在Window_Loaded事件上写此行吗?如果是这样,则不显示第二个窗口。
Manish Dubey 2015年

37

创建新的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

15
很简单!我讨厌wpf,它是如此无用的复杂,旨在违背直觉。

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


5

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

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

也考虑这一点。

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

5

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

好吧,如果要在打开新窗口时关闭打开的窗口,则可以使用Show()方法:

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

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


2

您将需要像这样创建一个新窗口的实例。

var window2 = new Window2();

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

window2.Show();

要么

var result = window2.ShowDialog();

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


2

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

var window2 = new Window2();
window2.Show();

2

您可以使用以下代码:

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.