Tôi đang làm việc trên một trò chơi, một ứng dụng Windows Store dựa trên WPF và được viết bằng C#. Khi người chơi nhấn phím Esc, tôi muốn tạm dừng trò chơi và hiển thị menu (Tiếp tục, Thoát, v.v.).Sự kiện bàn phím trang toàn cầu trong Windows Store Apps
Âm thanh đơn giản. Đáng buồn thay, nó không phải.
Trò chơi diễn ra trong một Windows.UI.Xaml.Controls.Page
và chủ yếu bao gồm hàng trăm Shape
s trong một Canvas
, nhưng không có đơn Button
, TextBox
hoặc bất cứ điều gì khác mà hỗ trợ tương tác bàn phím. Tương tác duy nhất là nhấp hoặc nhấn vào hình dạng.
Tôi cần nắm bắt các sự kiện bàn phím, toàn cầu cho toàn bộ trang, bất kể phần tử nào có tiêu điểm hoặc nếu có bất kỳ tiêu điểm nào cả. Bất cứ khi nào phím Esc được nhấn, sự kiện phải kích hoạt.
gì tôi đã cố gắng:
Sử dụng sự kiện
Page.KeyDown
hoặc trọngPage.OnKeyDown(KeyRoutedEventArgs e)
(hoặc KeyUp): Không cháy, trừ khi có một yếu tố chẳng hạn như mộtTextBox
với bàn phím lấy nét. Nhưng trong giao diện người dùng của tôi không có yếu tố như vậy.Sử dụng ẩn (
Opacity = 0
và/hoặc ẩn dưới Canvas) Hộp văn bản như một bản hack để làm cho KeyDown hoạt động: Ngay khi Canvas hoặc bất kỳ hình dạng nào được nhấp/nhấn, TextBox sẽ mất tiêu điểm và hack ngừng hoạt động. Vì vậy, cần có nhiều hacks hơn để làm cho nó tập trung, với những thứ khác như các nút menu. Hơn nữa, các TextBox đôi khi cho thấy bàn phím phần mềm Windows, mà là khá không mong muốn. Một hack không hoạt động, dễ vỡ.Sử dụng
InputGestures
,KeyBinding
v.v.: Không có sẵn cho Ứng dụng Windows Store.
Bất kỳ ý tưởng hoặc giải pháp nào?
Dường như làm việc, cảm ơn. Tôi sẽ làm một số thử nghiệm vào ngày mai và sau đó chấp nhận câu trả lời của bạn. –
@SebastianNegraszus - Không sao, hy vọng nó hoạt động! – keyboardP