Come si apre una seconda finestra dalla prima finestra in WPF?


125

Sono nuovo in WPF. Ho due finestre, come window1 e window2. Ho un pulsante in window1. Se clicco su quel pulsante, la finestra 2 deve aprirsi. Cosa dovrei fare per questo?

Ecco il codice che ho provato:

window2.show();

Risposte:


237

Scrivi il tuo codice in formato window1.

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

Posso scrivere questa riga sull'evento Window_Loaded? In tal caso, la seconda finestra non viene visualizzata.
Manish Dubey

37

Quando hai creato una nuova applicazione WPF dovresti avere un file .xaml e un file .cs. Questi rappresentano la tua finestra principale. Crea un file .xaml e un file .cs aggiuntivi per rappresentare la tua finestra secondaria.

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

Quindi aggiungi qualsiasi codice aggiuntivo necessario a queste classi:

SubWindow.xaml
SubWindow.xaml.cs

15
abbastanza semplice! Odio wpf, è così inutilmente complicato e progettato per essere controintuitivo.
Ren

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

5

Supponendo che la seconda finestra sia definita come public partial class Window2 : Window, puoi farlo:

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

voglio aprire window2 da window1.
ASHOK A

5

Questo mi ha aiutato: il metodo Owner fondamentalmente lega la finestra a un'altra finestra nel caso in cui desideri finestre extra con le stesse.

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

Considera anche questo.

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

5

In WPF abbiamo un paio di opzioni usando i metodi Show () e ShowDialog ().

Bene, se vuoi chiudere la finestra aperta quando viene aperta una nuova finestra, puoi usare il metodo Show ():

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

Anche ShowDialog () apre una finestra, ma in questo caso non è possibile chiudere la finestra aperta in precedenza.


2

Avrai bisogno di creare un'istanza di una nuova finestra in questo modo.

var window2 = new Window2();

Una volta ottenuta l'istanza, puoi utilizzare il metodo Show () o ShowDialog () a seconda di cosa vuoi fare.

window2.Show();

o

var result = window2.ShowDialog();

ShowDialog () restituirà un Nullable<bool>se necessario.


2

È possibile creare un pulsante in window1 e fare doppio clic su di esso. Creerà un nuovo gestore di clic, dove all'interno puoi scrivere qualcosa del genere:

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

2

Puoi usare questo codice:

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.