Làm thế nào tôi có thể bắt buộc ShowDialog
quay lại từ một chuỗi nền?WPF - Force ShowDialog để trả lại
Tôi có một ứng dụng WPF được xây dựng trên nền tảng C++/CLR đang lắng nghe các thông điệp được gửi bởi khung công tác. Một thông điệp đặc biệt quan trọng đến mức tôi cần phải đóng tất cả các cửa sổ hiện tại. Tuy nhiên, nếu phương thức Dialog
(được tạo bởi ShowDialog
từ cửa sổ chính của tôi) đang hoạt động và đang chờ người dùng nhập, cửa sổ sẽ không đóng vì nó đang đợi ShowDialog
trả lại. Làm thế nào tôi có thể buộc các phương thức Dialog
để đóng và thư giãn thực hiện mã?
Tôi đã thử đặt DialogResult
hoặc gọi số Close
tuy nhiên điều đó dường như không hoạt động.
Edit: Các Dialog
được tạo ra bởi cửa sổ chính của tôi mà hy vọng một giá trị trả về, như vậy: (bên trong một xử lý sự kiện nhấp chuột trong MainWindow
):
Window modalDialog = new Window();
bool ret = (bool)modalDialog.ShowDialog();
if (ret == true)
{
// do stuff
}
else
{
// do some other stuff
}
Khi khung gửi một thông điệp (sắp tới trong trên một chủ đề khác với chuỗi giao diện người dùng), tôi gọi MainWindow.Close()
. Hộp thoại phương thức được đóng tại thời điểm này, tuy nhiên mã kiểm tra giá trị trả lại của Dialog
(sau ShowDialog
) vẫn còn trên ngăn xếp. Bằng cách nào đó điều này buộc cửa sổ chính không biến mất.
Tôi đã chỉnh sửa câu hỏi ban đầu của mình để cho biết rằng ShowDialog được mong đợi trả lại giá trị và cửa sổ cha được cho là xử lý với giá trị ... – Hypherion