Tôi có ứng dụng sau đây đơn giản WPF:Tại sao đóng cửa sổ con cuối cùng giảm thiểu cửa sổ chính của nó?
App.xaml:
<Application x:Class="TestWpf2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Application>
App.xaml.cs:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
var parentWindow = new Window();
parentWindow.Show();
var childWindow1 = new Window { Owner = parentWindow };
childWindow1.Show();
var childWindow2 = new Window { Owner = parentWindow };
childWindow2.Show();
}
}
Ứng dụng này gây ra 3 cửa sổ để xuất hiện trên màn hình. Nếu bạn chạy ứng dụng và đóng hai cửa sổ con, cửa sổ chính sẽ được thu nhỏ xuống thanh tác vụ. Nếu bạn nhận xét ra childWindow2.show()
, hãy chạy ứng dụng và đóng cửa sổ con duy nhất, cửa sổ chính không được thu nhỏ vào thanh tác vụ.
tôi có thể thêm đoạn mã sau để làm việc xung quanh vấn đề này:
childWindow1.Closing += delegate(object sender, CancelEventArgs ex)
{
(sender as Window).Owner = null;
};
nhưng tôi không muốn sử dụng một hack như thế này, và tôi muốn hiểu tại sao vấn đề này xảy ra.
Tại sao điều này lại xảy ra?
Nó không được thu nhỏ, nó chỉ mất tiêu điểm và ẩn sau một cửa sổ khác. Giống như cửa sổ chính của Visual Studio. Thêm ShowActivated = false vào bộ khởi tạo cửa sổ con là một cách để sửa nó. –
@HansPassant ShowActivated chỉ dừng các cửa sổ con được kích hoạt khi chúng được tạo. Nếu người dùng nhấp vào chúng để kích hoạt chúng, sau đó đóng chúng, cửa sổ chính vẫn bị mất tiêu điểm. – Oliver
https://connect.microsoft.com/VisualStudio/feedback/details/523197/modal-dialog-on-top-of-non-modal-window-sends-main-window-to-back –