2016-10-28 8 views
0

私はテキストボックス、マイクボタン、および設定と共有のためのいくつかの他のボタンでチャットウィンドウを持っています。ですから、スペースボタンが押されるたびに、テキストボックスにフォーカスがある場合を除いて、常にマイクをオンにしたいのです。最後に他のボタンがクリックされても、スペースバーはマイクをオンにする必要があります。UWP:特定のUI要素に焦点を当てて、キープレスイベントを受け取れるようにするにはどうすればいいですか?

ヘルプや説明はありますか?

答えて

0

ここでは動作するサンプルです。

コードはここに

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あるFocusStateUnfocused

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> 
0

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 
} 
関連する問題