猿问

UWP 键盘加速器 FN 问题

<Button

    x:Name="PlayButton"

    Click="PlayButton_Click"

    Style="{StaticResource MediaControlButtonStyle}">

    <Button.Content>

        <FontIcon

            x:Name="PlayButtonIcon"

            FontSize="30"

            Glyph="&#xE768;" />

    </Button.Content>

    <Button.KeyboardAccelerators>

        <KeyboardAccelerator Key="F3" />

    </Button.KeyboardAccelerators>

</Button>

我想使用 F3 播放/暂停我的 UWP 应用中的音乐。但是,仅按 F3 在我的 Surface Book 2 上不起作用。我需要同时按 FN 和 F3 才能使其工作。我应该怎么做才能只按F3?Microsoft 内置 UWP 应用 Groove Music 只需按 F3 即可播放和暂停。


另一个问题是,当UWP应用程序的窗口最小化时,如何仍然使用键盘加速器?Groove 的键盘控制在窗口最小化时仍然有效。


海绵宝宝撒
浏览 171回答 1
1回答

一只名叫tom的猫

看来这个行为——是否需要按FN,与安装该应用程序的设备有关。当我在PC上运行时,我只需要按F3,但它需要在表面上按FN。如果你还想改变它,我在下面有一个解决方法,您可以在页面(例如MainPage)上注册加速器事件。public MainPage()&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.InitializeComponent();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Window.Current.Dispatcher.AcceleratorKeyActivated += AccelertorKeyActivedHandle;&nbsp; &nbsp; &nbsp; &nbsp; }private void AccelertorKeyActivedHandle(CoreDispatcher sender, AcceleratorKeyEventArgs args)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (args.EventType.ToString().Contains("Down"))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (args.VirtualKey == Windows.System.VirtualKey.F3)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // do something you want&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }UWP应用程序窗口最小化时,当前窗口没有焦点,因此设置的快捷键不会响应。但系统有默认的快捷键(例如Fn + F11)可以播放或暂停媒体。如果你想响应系统快捷键,需要允许backgroundMediaPlayback。你可以尝试一下官方的demo,也可以通过键盘自带的媒体按钮来控制。更新:根据官方示例,如果要使用MediaElement来播放,需要设置MediaPlay和MediaPlaybackList来绑定播放列表。这样的话,似乎可以通过系统默认的快捷键来控制。实际上起作用的是MediaPlayer。对于更详细的信息,还需要阅读官方demo。XAML:<MediaElement Name="mediaPlayerElement"&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AreTransportControlsEnabled="True" &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stretch="UniformToFill" Height="100" Width="400">隐藏代码:private void MainPage_Loaded(object sender, RoutedEventArgs e)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/xxx"));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Create a configurable playback item backed by the media source&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var playbackItem = new MediaPlaybackItem(source);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MediaPlayer player = new MediaPlayer();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MediaPlaybackList lists = new MediaPlaybackList();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lists.Items.Add(playbackItem);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; player.Source = lists;&nbsp; &nbsp; &nbsp; &nbsp; }
随时随地看视频慕课网APP
我要回答