UWP:如何确定对特定UI元素的关注,以便我可以接收按键事件?

时间:2016-10-28 19:06:04

标签: xaml uwp uwp-xaml

所以我有一个聊天窗口,带有文本框,麦克风按钮和其他一些用于设置和共享的按钮。所以我想在按下空格按钮时始终打开麦克风,除非文本框有焦点。无论最后点击其他按钮,空格键都应该打开麦克风。

任何帮助或指示?

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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我要检查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>