Làm cách nào để mở cửa sổ thứ hai từ cửa sổ đầu tiên trong WPF?


125

Tôi mới làm quen với WPF. Tôi có hai cửa sổ, chẳng hạn như window1 và window2. Tôi có một nút trong window1. Nếu tôi nhấp vào nút đó, window2 phải mở. Tôi nên làm gì cho điều đó?

Đây là mã tôi đã thử:

window2.show();

Câu trả lời:


237

Viết mã của bạn vào window1.

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

Tôi có thể viết dòng này trên sự kiện Window_Loaded không? Nếu vậy, thì cửa sổ thứ hai không hiển thị.
Manish Dubey

37

Khi bạn đã tạo một ứng dụng WPF mới, bạn phải có tệp .xaml và tệp .cs. Chúng đại diện cho cửa sổ chính của bạn. Tạo tệp .xaml bổ sung và tệp .cs để đại diện cho cửa sổ phụ của bạn.

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

Sau đó, thêm bất kỳ mã bổ sung nào bạn cần vào các lớp này:

SubWindow.xaml
SubWindow.xaml.cs

15
đủ đơn giản! Tôi ghét wpf, nó quá phức tạp và vô dụng và được thiết kế để trở nên khó hiểu.
Ren

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

5

Giả sử cửa sổ thứ hai được định nghĩa là public partial class Window2 : Window, bạn có thể làm điều đó bằng cách:

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

tôi muốn mở window2 từ window1.
ASHOK A

5

Điều này đã giúp tôi: Về cơ bản, phương pháp Owner liên kết cửa sổ này với một cửa sổ khác trong trường hợp bạn muốn có thêm các cửa sổ giống nhau.

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

Hãy xem xét điều này là tốt.

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

5

Trong WPF, chúng tôi có một số tùy chọn bằng cách sử dụng các phương thức Show () và ShowDialog ().

Vâng, nếu bạn muốn đóng cửa sổ đã mở khi một cửa sổ mới mở ra thì bạn có thể sử dụng phương thức Show ():

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

ShowDialog () cũng mở một cửa sổ, nhưng trong trường hợp này, bạn không thể đóng cửa sổ đã mở trước đó.


2

Bạn sẽ cần tạo một phiên bản của một cửa sổ mới như vậy.

var window2 = new Window2();

Khi bạn có phiên bản, bạn có thể sử dụng phương thức Show () hoặc ShowDialog () tùy thuộc vào những gì bạn muốn làm.

window2.Show();

hoặc là

var result = window2.ShowDialog();

ShowDialog () sẽ trả về a Nullable<bool>nếu bạn cần.


2

Bạn có thể tạo một nút trong window1 và nhấp đúp vào nó. Nó sẽ tạo một trình xử lý nhấp chuột mới, nơi bên trong bạn có thể viết một cái gì đó như thế này:

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

2

Bạn có thể sử dụng mã này:

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.