Bir oyun üzerinde çalışıyorum, WPF'ye dayanan ve C# ile yazılmış bir Windows Mağaza Uygulaması. Oyuncu Esc tuşuna bastığında, oyunu duraklatmak ve bir menü göstermek istiyorum (Devam, Çık, vb.).Windows Mağazası'ndaki Page-global klavye olayları Page 0 Küresel klavye uygulamaları
Basit sesler. Ne yazık ki, öyle değil.
oyun Windows.UI.Xaml.Controls.Page
gerçekleşir ve öncelikle bir Canvas
içinde Shape
s yüzlerce oluşur, ancak hiçbir tek Button
, TextBox
veya klavye etkileşimi destekleyen başka bir şey. Tek etkileşim, şekillere tıklamak veya dokunmaktır.
Genel olarak tüm sayfa için klavye olaylarını yakalamam gerekir; hangi öğeye odaklanılırsa odaklansın veya herhangi bir odaklama bile olsaydı vs. Esc tuşuna her basıldığında bir olay tetiklenir.
Denedim Ne:
olayı
Page.KeyDown
veya geçersiz kılmaPage.OnKeyDown(KeyRoutedEventArgs e)
(veya KeyUp) kullanarak: Böyle Klavye odaklı birTextBox
gibi bir eleman olmadığı takdirde, yangın yapmaz. Fakat benim arayüzümde böyle bir unsur yok. görünmez bir kullanma(
Opacity = 0
ve/veya Tuval altında gizli) bir hack KeyDown çalışması için TextBox: En kısa sürede Tuval veya herhangi Şekli vurdu/tıklandığında olarak, TextBox odağı kaybettiğinde ve kesmek çalışmayı durdurur. Böylece, odağı tutması için daha çok korsanlık gerekiyor, bu da menü düğmeleri gibi diğer şeylerle vidalanıyor. Dahası, TextBox zaman zaman oldukça istenmeyen Windows yazılım klavyesini gösterir. Zorlukla çalışan, kırılgan bir hack.InputGestures
,KeyBinding
vb. Kullanma: Windows Store Apps için geçerli değildir.
Herhangi bir fikir veya çözüm var mı?
Çalıştığınız için teşekkür ederiz. Yarın biraz daha test yapacağım ve cevabını kabul edeceğim. –
@SebastianNegraszus - Sorun değil, işe yarıyor! – keyboardP