2011-10-07 38 views
27

thể trùng lặp:
How can I assign the 'Close on Escape-key press' behavior to all WPF windows within a project?Làm thế nào để Đóng một cửa sổ trong WPF trên một lối thoát chính

Tôi muốn đóng các cửa sổ trong dự án WPF của tôi khi người dùng nhấp chuột vào nút thoát. Tôi không muốn viết mã trong mỗi cửa sổ nhưng muốn tạo một lớp có thể bắt được khi người dùng nhấn phím thoát.

+0

đó không phải là giải pháp của tôi .. Tôi thậm chí không muốn được thực hiện trong mọi cửa sổ. Tôi muốn viết rằng trong một Style nhưng thats không làm việc như Propety không có sẵn trong Phong cách –

+0

Check-out [này] [1] bài đăng - nó giải thích exactlyhow để đạt được điều này [1] : http://stackoverflow.com/questions/3863431/how-can-i-assign-the-close-on-escape-key-press-behavior-to-all-wpf-windows-with –

+0

Đây là bản sao của http://stackoverflow.com/questions/419596/how-does-the-wpf-button-iscancel-property-work –

Trả lời

97

Lựa chọn 1

Sử dụng Button.IsCancel tài sản.

<Button Name="btnCancel" IsCancel="true" Click="OnClickCancel">Cancel</Button> 

Khi bạn thiết lập thuộc tính của một nút là true IsCancel, bạn tạo một nút được đăng ký với AccessKeyManager. Nút này là sau đó được kích hoạt khi người dùng nhấn phím ESC.

Tuy nhiên, tính năng này chỉ hoạt động đúng với Hộp thoại.

OPTION2

Bạn thêm một handler để PreviewKeyDown trên cửa sổ nếu bạn muốn đóng cửa sổ trên Esc báo chí.

public MainWindow() 
{ 
    InitializeComponent(); 

    this.PreviewKeyDown += new KeyEventHandler(HandleEsc); 
} 

private void HandleEsc(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Escape) 
     Close(); 
} 
+1

Tôi không muốn sử dụng một nút ... Bất kỳ hw cảm ơn, tôi tìm thấy giải pháp –

+0

@kishorejangid: Ví dụ mã thứ hai không sử dụng nút. – CharithJ

+2

@kishorejangid - Bạn có thể đăng câu trả lời của mình ở đây không? –

Các vấn đề liên quan