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();
ASHOK A
quelle

Antworten:

237

Write your code in window1.

private void Button_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
Chandru A.
quelle
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
TokyoMike
quelle
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();
}
KF2
quelle
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();
Vladislav Zorov
quelle
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();
Jeandre Van Dyk
quelle
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.

user1399377
quelle
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.

Jeff
quelle
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();
LadislavM
quelle
2

Sie können diesen Code verwenden:

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