web-dev-qa-db-fra.com

Comment ouvrir une deuxième fenêtre à partir de la première fenêtre dans WPF?

Je suis nouveau à WPF. J'ai deux fenêtres, telles que window1 et window2. J'ai un bouton dans window1. Si je clique sur ce bouton, la fenêtre2 doit s'ouvrir. Que dois-je faire pour ça?

Voici le code que j'ai essayé:

window2.show();
110
ASHOK A

Ecrivez votre code dans window1.

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

Vous aurez envie de créer une nouvelle application WPF. Une fois que cela est fait, vous devriez avoir un fichier .xaml et un fichier .cs. Ceux-ci représentent votre fenêtre principale. Créez un fichier .xaml et un fichier .cs supplémentaires pour représenter votre sous-fenêtre.

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

Ajoutez ensuite le code supplémentaire dont vous avez besoin à ces classes:

SubWindow.xaml
SubWindow.xaml.cs
35
TokyoMike
private void button1_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
17
KF2

Dans WPF, nous avons plusieurs options en utilisant les méthodes Show () et ShowDialog ().

Eh bien, si vous voulez fermer la fenêtre ouverte quand une nouvelle fenêtre s'ouvre, vous pouvez utiliser la méthode Show ():

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

ShowDialog () ouvre également une fenêtre, mais dans ce cas, vous ne pouvez pas fermer votre fenêtre précédemment ouverte.

5
user1399377

Cela m'a aidé: La méthode Owner lie la fenêtre à une autre fenêtre au cas où vous voudriez des fenêtres supplémentaires avec les mêmes.

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

Considérez ceci aussi.

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

En supposant que la deuxième fenêtre soit définie comme public partial class Window2 : Window, vous pouvez le faire de la manière suivante:

Window2 win2 = new Window2();
win2.Show();
4
Vladislav Zorov

Vous pouvez créer un bouton dans window1 et double-cliquer dessus. Cela créera un nouveau gestionnaire de clics, dans lequel vous pourrez écrire quelque chose comme ceci:

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

Vous pouvez utiliser ce code:

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

Vous devrez créer une instance d'une nouvelle fenêtre comme ceci.

var window2 = new Window2();

Une fois que vous avez l'instance, vous pouvez utiliser la méthode Show () ou ShowDialog () en fonction de ce que vous voulez faire.

window2.Show();

ou

var result = window2.ShowDialog();

ShowDialog () retournera un Nullable<bool> si vous en avez besoin.

2
Jeff