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

152

我是WPF的新手。我有两个窗口,例如window1和window2。在window1中有一个按钮。如果我点击这个按钮,就要打开window2。我该怎么做呢?

这是我尝试过的代码:

window2.show();
9个回答

269

请在window1中编写您的代码。

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

1
我可以在Window_Loaded事件中编写这行代码吗?如果是这样,那么第二个窗口就不会显示。 - Manish Dubey
@Manish - 根据方法名称(Button_Click),将其放置在Window1上的按钮单击事件中。 - Mark Roworth

53

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

26
够简单!我讨厌WPF,它太过复杂而且设计反直觉。 - Ren

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

6
这对我很有帮助: Owner方法基本上将窗口与另一个窗口绑定,以防您需要具有相同窗口的其他窗口。
LoadingScreen lc = new LoadingScreen();
lc.Owner = this;
lc.Show();

请考虑以下事项。
this.WindowState = WindowState.Normal;
this.Activate();

6
假设第二个窗口被定义为public partial class Window2 : Window,您可以通过以下方式实现:
Window2 win2 = new Window2();
win2.Show();

我想从窗口1打开窗口2。 - ASHOK A

5
在WPF中,我们可以使用Show()和ShowDialog()方法来打开窗口。
如果您想在打开新窗口时关闭已打开的窗口,则可以使用Show()方法:
Window1 win1 = new Window1();
win1.Show();
win1.Close();

ShowDialog()同样会打开一个窗口,但是在这种情况下,你不能关闭之前已经打开的窗口。


2

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

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

2
您需要像这样创建一个新窗口的实例。
var window2 = new Window2();

一旦你有了实例,你可以使用Show()ShowDialog()方法,具体取决于你想要做什么。

window2.Show();

或者

var result = window2.ShowDialog();

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


2
您可以使用以下代码:
private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接