Bagaimana cara membuka jendela kedua dari jendela pertama di WPF?

125

Saya baru mengenal WPF. Saya memiliki dua jendela, seperti window1 dan window2. Saya punya satu tombol di window1. Jika saya mengklik tombol itu, window2 harus terbuka. Apa yang harus saya lakukan untuk itu?

Ini kode yang saya coba:

window2.show();
TANYA A
sumber

Jawaban:

237

Tulis kode Anda window1.

private void Button_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
Chandru A
sumber
Dapatkah saya menulis baris ini pada acara Window_Loaded? Jika demikian, maka jendela kedua tidak ditampilkan.
Manish Dubey
37

Ketika Anda telah membuat aplikasi WPF baru, Anda harus memiliki file .xaml dan file .cs. Ini mewakili jendela utama Anda. Buat file .xaml tambahan dan file .cs untuk mewakili sub jendela Anda.

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

Kemudian tambahkan kode tambahan apa pun yang Anda butuhkan ke kelas-kelas ini:

SubWindow.xaml
SubWindow.xaml.cs
TokyoMike
sumber
15
cukup sederhana! Aku benci wpf, itu sangat rumit dan dirancang untuk menjadi kontra intutif.
Ren
17
private void button1_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
KF2
sumber
5

Dengan asumsi jendela kedua didefinisikan sebagai public partial class Window2 : Window, Anda dapat melakukannya dengan:

Window2 win2 = new Window2();
win2.Show();
Vladislav Zorov
sumber
saya ingin membuka window2 dari window1.
TANYAKAN A
5

Ini membantu saya: Metode Pemilik pada dasarnya mengikat jendela ke jendela lain jika Anda menginginkan jendela tambahan dengan jendela yang sama.

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

Pertimbangkan ini juga.

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

Di WPF kami memiliki beberapa opsi dengan menggunakan metode Show () dan ShowDialog ().

Nah, jika Anda ingin menutup jendela yang terbuka ketika jendela baru terbuka maka Anda dapat menggunakan metode Show ():

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

ShowDialog () juga membuka jendela, tetapi dalam hal ini Anda tidak dapat menutup jendela yang sebelumnya dibuka.

pengguna1399377
sumber
2

Anda perlu membuat instance dari jendela baru seperti itu.

var window2 = new Window2();

Setelah Anda memiliki instance, Anda dapat menggunakan metode Show () atau ShowDialog () tergantung pada apa yang ingin Anda lakukan.

window2.Show();

atau

var result = window2.ShowDialog();

ShowDialog () akan mengembalikan Nullable<bool>jika Anda membutuhkannya.

Jeff
sumber
2

Anda dapat membuat tombol di window1 dan mengklik dua kali di atasnya. Ini akan membuat handler klik baru, di mana di dalamnya Anda dapat menulis sesuatu seperti ini:

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

Anda dapat menggunakan kode ini:

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