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

Jawaban:


237

Tulis kode Anda window1.

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

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

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

5

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

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

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

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.


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.


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

2

Anda dapat menggunakan kode ini:

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.