私はテキストボックス、マイクボタン、および設定と共有のためのいくつかの他のボタンでチャットウィンドウを持っています。ですから、スペースボタンが押されるたびに、テキストボックスにフォーカスがある場合を除いて、常にマイクをオンにしたいのです。最後に他のボタンがクリックされても、スペースバーはマイクをオンにする必要があります。UWP:特定のUI要素に焦点を当てて、キープレスイベントを受け取れるようにするにはどうすればいいですか?
ヘルプや説明はありますか?
私はテキストボックス、マイクボタン、および設定と共有のためのいくつかの他のボタンでチャットウィンドウを持っています。ですから、スペースボタンが押されるたびに、テキストボックスにフォーカスがある場合を除いて、常にマイクをオンにしたいのです。最後に他のボタンがクリックされても、スペースバーはマイクをオンにする必要があります。UWP:特定のUI要素に焦点を当てて、キープレスイベントを受け取れるようにするにはどうすればいいですか?
ヘルプや説明はありますか?
ここでは動作するサンプルです。
コードはここに
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
}
private void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
{
if (args.VirtualKey == Windows.System.VirtualKey.Space && txtData.FocusState == FocusState.Unfocused))
{
txtData.Text = "Mike Called";
}
}
}
txtData
の後ろに私が持っている場合、私は私のチェックTextBox
あるFocusState
Unfocused
XAML
<Page
x:Class="App12.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App12"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBox Text="Hello World" Name="txtData" Width="300" Height="35" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Page>
KeyDown
のイベントをWindow.Current.CoreWindow
に登録する必要があります。フォーカスされたコントロールに関係なく、ユーザーが任意のキーを押すたびに発生します。あなたのアプリだけが焦点を合わせる必要があります。
Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
private void CoreWindow_KeyDown(CoreWindow sender, KeyEventArgs args)
{
if (args.Handled)
{
return;
}
// Your event handling
}