ฉันจะเปิดหน้าต่างที่สองจากหน้าต่างแรกใน WPF ได้อย่างไร


125

ฉันยังใหม่กับ WPF ฉันมีสองหน้าต่างเช่น window1 และ window2 ฉันมีปุ่มเดียวใน window1 ถ้าฉันคลิกปุ่มนั้นหน้าต่าง 2 จะต้องเปิดขึ้น จะทำอย่างไรดี?

นี่คือรหัสที่ฉันลอง:

window2.show();

คำตอบ:


237

เขียนรหัสของคุณในwindow1.

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

ฉันสามารถเขียนบรรทัดนี้ในเหตุการณ์ Window_Loaded ได้หรือไม่ ในกรณีนี้แสดงว่าหน้าต่างที่สองไม่ปรากฏขึ้น
Manish Dubey

37

เมื่อคุณสร้างแอปพลิเคชัน WPF ใหม่คุณควรมีไฟล์. xaml และไฟล์. cs สิ่งเหล่านี้แสดงถึงหน้าต่างหลักของคุณ สร้างไฟล์. xaml และไฟล์. c เพิ่มเติมเพื่อแสดงหน้าต่างย่อยของคุณ

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

จากนั้นเพิ่มรหัสเพิ่มเติมที่คุณต้องการในชั้นเรียนเหล่านี้:

SubWindow.xaml
SubWindow.xaml.cs

15
ง่ายพอ! ฉันเกลียด wpf มันซับซ้อนไร้ประโยชน์และออกแบบมาให้ต่อต้าน
Ren



5

สิ่งนี้ช่วยฉันได้: วิธีการเจ้าของโดยทั่วไปจะเชื่อมโยงหน้าต่างกับหน้าต่างอื่นในกรณีที่คุณต้องการหน้าต่างพิเศษที่มีหน้าต่างเดียวกัน

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

พิจารณาเรื่องนี้ด้วย

this.WindowState = WindowState.Normal;
this.Activate();

5

ใน WPF เรามีสองตัวเลือกโดยใช้วิธี Show () และ ShowDialog ()

ถ้าคุณต้องการปิดหน้าต่างที่เปิดอยู่เมื่อหน้าต่างใหม่เปิดขึ้นคุณสามารถใช้วิธี Show ():

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

ShowDialog () จะเปิดหน้าต่างด้วย แต่ในกรณีนี้คุณไม่สามารถปิดหน้าต่างที่เปิดไว้ก่อนหน้านี้ได้


2

คุณจะต้องสร้างอินสแตนซ์ของหน้าต่างใหม่ดังนี้

var window2 = new Window2();

เมื่อคุณมีอินสแตนซ์แล้วคุณสามารถใช้วิธีShow ()หรือShowDialog ()ขึ้นอยู่กับสิ่งที่คุณต้องการทำ

window2.Show();

หรือ

var result = window2.ShowDialog();

ShowDialog () จะส่งคืนNullable<bool>หากคุณต้องการ


2

คุณสามารถสร้างปุ่มใน window1 และดับเบิลคลิกที่มัน มันจะสร้างตัวจัดการการคลิกใหม่ซึ่งคุณสามารถเขียนสิ่งนี้ได้ภายใน:

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

2

คุณสามารถใช้รหัสนี้:

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.