Wie öffne ich ein zweites Fenster aus dem ersten Fenster in WPF?


125

I am new to WPF. I have two windows, such as window1 and window2. I have one button in window1. If I click that button, the window2 has to open. What should I do for that?

Here is the code I tried:

window2.show();

Antworten:


237

Write your code in window1.

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

Kann ich diese Zeile für das Window_Loaded-Ereignis schreiben? Wenn ja, wird das zweite Fenster nicht angezeigt.
Manish Dubey

37

Wenn Sie eine neue WPF-Anwendung erstellt haben, sollten Sie eine .xaml-Datei und eine .cs-Datei haben. Diese repräsentieren Ihr Hauptfenster. Erstellen Sie eine zusätzliche .xaml- und .cs-Datei, um Ihr Unterfenster darzustellen.

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();
    }
}

Fügen Sie diesen Klassen dann den zusätzlichen Code hinzu, den Sie benötigen:

SubWindow.xaml
SubWindow.xaml.cs

15
einfach genug! Ich hasse wpf, es ist einfach so nutzlos kompliziert und so konzipiert, dass es nicht intuitiv ist.
Ren

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

5

Angenommen, das zweite Fenster ist definiert als public partial class Window2 : Window: Sie können dies tun durch:

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

Ich möchte Fenster2 von Fenster1 öffnen.
ASHOK A

5

Dies hat mir geholfen: Die Owner-Methode bindet das Fenster grundsätzlich an ein anderes Fenster, falls Sie zusätzliche Fenster mit denselben wünschen.

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

Bedenken Sie dies auch.

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

5

In WPF haben wir einige Optionen, indem wir die Methoden Show () und ShowDialog () verwenden.

Wenn Sie das geöffnete Fenster schließen möchten, wenn ein neues Fenster geöffnet wird, können Sie die Show () -Methode verwenden:

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

ShowDialog () öffnet auch ein Fenster, aber in diesem Fall können Sie Ihr zuvor geöffnetes Fenster nicht schließen.


2

Sie müssen eine solche Instanz eines neuen Fensters erstellen.

var window2 = new Window2();

Sobald Sie die Instanz haben, können Sie die Show () - oder ShowDialog () -Methode verwenden, je nachdem, was Sie tun möchten.

window2.Show();

oder

var result = window2.ShowDialog();

ShowDialog () gibt ein zurück, Nullable<bool>wenn Sie das brauchen.


2

Sie können in window1 eine Schaltfläche erstellen und darauf doppelklicken. Es wird ein neuer Klick-Handler erstellt, in den Sie Folgendes schreiben können:

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

2

Sie können diesen Code verwenden:

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.