2012-06-21 20 views
74

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 tiene que abrirse. ¿Qué debo hacer para eso? Aquí está el código de lo que probé.¿Cómo abrir la segunda ventana desde la primera ventana en wpf?

window2.show(); 
+4

¿Qué ha probado? Es algo básico que puede encontrar buscando a menos que tenga un problema específico, que no mencionó. – Reniuz

Respuesta

154

Escribe tu código en window1.

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

¿Puedo escribir esta línea en el evento Window_Loaded? Si es así, la segunda ventana no se muestra. –

+5

Poner el 'this.Close()' en cualquier evento de carga de ventana probablemente no sea una buena idea. – StingyJack

2

Suponiendo que la segunda ventana se define como public partial class Window2 : Window, puede hacerlo a través de:

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

quiero abrir window2 desde window1. –

2

Puede crear botón en window1 y haga doble clic en él. Se va a crear nuevo controlador de clic, en cuyo interior se puede escribir algo como esto:

var window2 = new Window2(); 
window2.Show(); 
15
private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    window2 win2 = new window2(); 
    win2.Show(); 
} 
25

Usted desea crear una nueva aplicación de WPF. Una vez que haya hecho esto, debe tener un archivo .xaml y un archivo .cs. Estos representan su ventana principal. Cree un archivo .xaml adicional y un archivo .cs para representar su subventana.

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

continuación, añade el código adicional que necesita para estas clases:

SubWindow.xaml SubWindow.xaml.cs

+7

lo suficientemente simple! Odio a wpf, es tan inútilmente complicado y está diseñado para ser contradictorio. –

+13

Excepto que está mal. No necesita una nueva aplicación completa. Solo una nueva ventana. –

5

En WPF tenemos dos opciones usando el método Show() y ShowDialog(). Bueno, si usted quiere cerrar la ventana que se abre cuando la nueva ventana se abre a continuación, puede utilizar método Show()

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

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

1

puede utilizar este código, la esperanza para ayudarle a

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

    } 

Gracias :)

2

Usted tendrá que crear una instancia de una nueva ventana como tal.

var window2 = new Window2(); 

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

window2.Show(); 

o

var result = window2.ShowDialog(); 

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

4

Esto me ayudó: El método de 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(); 
Cuestiones relacionadas