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

125

Je suis nouveau sur 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être 2 doit s'ouvrir. Que dois-je faire pour ça?

Voici le code que j'ai essayé:

window2.show();
ASHOK A
la source

Réponses:

237

Écrivez votre code window1.

private void Button_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
Chandru A
la source
Puis-je écrire cette ligne sur l'événement Window_Loaded? Si tel est le cas, la deuxième fenêtre ne s'affiche pas.
Manish Dubey
37

Lorsque vous avez créé une nouvelle application WPF, vous devez disposer d'un fichier .xaml et d'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();
    }
}

Ensuite, ajoutez le code supplémentaire dont vous avez besoin à ces classes:

SubWindow.xaml
SubWindow.xaml.cs
TokyoMike
la source
15
assez simple! Je déteste wpf, c'est tellement inutilement compliqué et conçu pour être contre-intuitif.
Ren
17
private void button1_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
KF2
la source
5

En supposant que la deuxième fenêtre est définie comme public partial class Window2 : Window, vous pouvez le faire en:

Window2 win2 = new Window2();
win2.Show();
Vladislav Zorov
la source
je veux ouvrir window2 à partir de window1.
ASHOK A
5

Cela m'a aidé: la méthode Owner lie essentiellement 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 cela également.

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

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

Eh bien, si vous souhaitez fermer la fenêtre ouverte lorsqu'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.

user1399377
la source
2

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

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 () renverra un Nullable<bool>si vous en avez besoin.

Jeff
la source
2

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();
LadislavM
la source
2

Vous pouvez utiliser ce code:

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