Nếu người dùng đóng Ứng dụng, một Tệp tin Lưu-Tệp phải được hiển thị (để chắc chắn rằng anh ta muốn loại bỏ các thay đổi của các tệp đã chỉnh sửa).ShowDialog trong Sự kiện đóng
để thực hiện điều này, tôi có một menuitem với một lệnh ràng buộc (không có key-gesture):
private void Command_Exit(object sender, ExecutedRoutedEventArgs e)
{
Application.Current.Shutdown();
}
các MainWindow có một kết thúc sự kiện. trong sự kiện này, tôi kiểm tra xem có tệp chưa được lưu hay không. nếu có, savedialog phải được mở (để lựa chọn, trong đó các file phải được lưu):
private void Window_Closing(object sender, CancelEventArgs e)
{
if (sdl.Count() > 0)
{
SaveDialog sd = new SaveDialog();
IEnumerable<Doc> close = sd.ShowDialog(this);
if (close == null)
e.Cancel = true;
else
foreach (Doc document in close)
document.Save();
}
}
trong này ShowDialog-Phương (thực hiện trong tôi SaveDialog-Class) tôi gọi
bool? ret = ShowDialog();
if (!ret.HasValue)
return null;
if (!ret.Value)
return null;
Vấn đề là:
Nếu tôi sử dụng phím tắt Alt + F4 để đóng ứng dụng (hành vi mặc định của mainwindow) nó hoạt động và tôi nhận được lưu trữ nếu có tệp chưa được lưu. nhưng nếu tôi đóng ứng dụng bằng cách thực hiện Command_Exit-Method, Method-Call
bool? ret = ShowDialog();
trả về null và hộp thoại không xuất hiện.
Nếu tôi gán Alt + F4 KeyGesture cho CommandBinding, sự cố được chuyển đổi: Thực thi Command_Exit hoạt động tốt nhưng phím tắt Alt + F4 thì không.
Lý do mà phương thức ShowDialog() hoạt động không có trong cả hai trường hợp và cách khắc phục?
Có thể đóng cửa sổ theo cách nào? Không chỉ tương tác. – Jodrell