¿Cómo abro una segunda ventana desde la primera ventana en WPF?

125

Soy nuevo en WPF. Tengo dos ventanas, como window1 y window2. Tengo un botón en window1. Si hago clic en ese botón, la ventana2 debe abrirse. ¿Qué debo hacer para eso?

Aquí está el código que probé:

window2.show();
ASHOK A
fuente

Respuestas:

237

Escribe tu código en formato window1.

private void Button_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
Chandru A
fuente
¿Puedo escribir esta línea en el evento Window_Loaded? Si es así, la segunda ventana no se muestra.
Manish Dubey
37

Cuando haya creado una nueva aplicación WPF, debe tener un archivo .xaml y un archivo .cs. Estos representan su ventana principal. Cree un archivo .xaml y un archivo .cs adicionales para representar su ventana secundaria.

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

Luego agregue cualquier código adicional que necesite a estas clases:

SubWindow.xaml
SubWindow.xaml.cs
TokioMike
fuente
15
¡Suficientemente simple! Odio wpf, es tan inútilmente complicado y diseñado para ser contradictorio.
Ren
17
private void button1_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
KF2
fuente
5

Suponiendo que la segunda ventana está definida como public partial class Window2 : Window, puede hacerlo de la siguiente manera:

Window2 win2 = new Window2();
win2.Show();
Vladislav Zorov
fuente
Quiero abrir window2 desde window1.
ASHOK A
5

Esto me ayudó: el método Propietario básicamente vincula la ventana a otra ventana en caso de que desee ventanas adicionales con las mismas.

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

Considere esto también.

this.WindowState = WindowState.Normal;
this.Activate();
Jeandre Van Dyk
fuente
5

En WPF tenemos un par de opciones usando los métodos Show () y ShowDialog ().

Bueno, si desea cerrar la ventana abierta cuando se abre una nueva ventana, puede usar el método Show ():

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

ShowDialog () también abre una ventana, pero en este caso no puede cerrar la ventana abierta anteriormente.

usuario1399377
fuente
2

Deberá crear una instancia de una nueva ventana como esta.

var window2 = new Window2();

Una vez que tenga la instancia, puede usar el método Show () o ShowDialog () dependiendo de lo que desee hacer.

window2.Show();

o

var result = window2.ShowDialog();

ShowDialog () devolverá un Nullable<bool>si lo necesita.

Jeff
fuente
2

Puede crear un botón en window1 y hacer doble clic en él. Creará un nuevo controlador de clics, donde dentro puede escribir algo como esto:

var window2 = new Window2();
window2.Show();
LadislavM
fuente
2

Puedes usar este código:

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