Como faço para abrir uma segunda janela da primeira janela no WPF?

125

Eu sou novo no WPF. Eu tenho duas janelas, como window1 e window2. Eu tenho um botão na janela1. Se eu clicar nesse botão, a janela2 terá que abrir. O que devo fazer por isso?

Aqui está o código que tentei:

window2.show();
ASHOK A
fonte

Respostas:

237

Escreva seu código window1.

private void Button_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
Chandru A
fonte
Posso escrever esta linha no evento Window_Loaded? Nesse caso, a segunda janela não está sendo exibida.
Manish Dubey
37

Ao criar um novo aplicativo WPF, você deve ter um arquivo .xaml e um arquivo .cs. Estes representam sua janela principal. Crie um arquivo .xaml adicional e um arquivo .cs para representar sua sub-janela.

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

Em seguida, adicione qualquer código adicional necessário a essas classes:

SubWindow.xaml
SubWindow.xaml.cs
TokyoMike
fonte
15
simples o suficiente! Eu odeio o wpf, é tão inútil e complicado e projetado para ser contra-intutivo.
Ren
17
private void button1_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
KF2
fonte
5

Assumindo que a segunda janela é definida como public partial class Window2 : Window, você pode fazê-lo:

Window2 win2 = new Window2();
win2.Show();
Vladislav Zorov
fonte
Eu quero abrir a janela2 da janela1.
ASHOK A
5

Isso me ajudou: O método Owner basicamente vincula a janela a outra janela, caso você queira janelas extras com as mesmas.

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

Considere isso também.

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

No WPF, temos algumas opções usando os métodos Show () e ShowDialog ().

Bem, se você deseja fechar a janela aberta quando uma nova janela for aberta, use o método Show ():

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

ShowDialog () também abre uma janela, mas neste caso você não pode fechar a janela aberta anteriormente.

user1399377
fonte
2

Você precisará criar uma instância de uma nova janela como essa.

var window2 = new Window2();

Depois de ter a instância, você pode usar o método Show () ou ShowDialog () , dependendo do que você deseja fazer.

window2.Show();

ou

var result = window2.ShowDialog();

ShowDialog () retornará um Nullable<bool>se você precisar disso.

Jeff
fonte
2

Você pode criar um botão na janela1 e clicar duas vezes nele. Ele criará um novo manipulador de cliques, onde você pode escrever algo assim:

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

Você pode usar este código:

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