C# UWP键盘加速器FN问题
我想使用F3在我的UWP应用程序中播放/暂停音乐。但是,简单地按F3键在我的Surface Book 2上不起作用。我需要同时按下FN和F3使其工作。我应该怎么做才能只按F3键?Microsoft内置UWP应用程序Groove Music仅按F3键即可播放和暂停音乐 另一个问题是,当UWP应用程序的窗口最小化时,我如何仍然使用键盘加速器?Groove的键盘控件仍然可以在最小化窗口的情况下工作。似乎需要按FN或不按FN的行为与安装应用程序的设备有关。当我在PC中运行时,我只需要按F3,但表面上需要FN。如果你仍然想更改它,我有一个解决方法,您可以在页面(例如主页)上注册加速器事件 当UWP应用程序的窗口最小化时,当前窗口没有焦点,因此设置的快捷方式将不会响应。但系统有其默认快捷方式(例如Fn+F11)可以播放或暂停媒体。如果您想响应系统快捷方式,则需要允许backgroundMediaPlayback。您可以尝试,也可以通过键盘随附的媒体按钮进行控制 更新: 根据官方示例,如果要使用MediaElement进行播放,应该设置MediaPlay和MediaPlaybackList来绑定播放列表。在这种情况下,似乎可以通过系统默认的快捷键进行控制。真正起作用的是MediaPlayer。更多详细信息,您还需要阅读官方演示 XAML:C# UWP键盘加速器FN问题,c#,xaml,uwp,keyboard-shortcuts,C#,Xaml,Uwp,Keyboard Shortcuts,我想使用F3在我的UWP应用程序中播放/暂停音乐。但是,简单地按F3键在我的Surface Book 2上不起作用。我需要同时按下FN和F3使其工作。我应该怎么做才能只按F3键?Microsoft内置UWP应用程序Groove Music仅按F3键即可播放和暂停音乐 另一个问题是,当UWP应用程序的窗口最小化时,我如何仍然使用键盘加速器?Groove的键盘控件仍然可以在最小化窗口的情况下工作。似乎需要按FN或不按FN的行为与安装应用程序的设备有关。当我在PC中运行时,我只需要按F3,但表面上需要
我很抱歉,但添加这段代码会使按F3或FN+F3失败…我不知道为什么。我实际上是想让默认的快捷方式来控制我的应用程序。这就是我模仿Groove行为的原因。似乎
几乎就是我需要添加的所有东西。但是添加这一点似乎对背景播放或背景控制都不起作用。我在我的surfacebook上测试了它,这并不重要。当您按下键盘时,它是否触发了事件?您是否使用MediaPlayerElement进行后台播放或控制?我是否必须使用MediaPlayerElement?我使用MediaElement是因为我想自己定制它。谢谢!它正在工作。我已经为媒体元素手动实现了很多功能。移除它们真是一件痛苦的事。。。
<Button
x:Name="PlayButton"
Click="PlayButton_Click"
Style="{StaticResource MediaControlButtonStyle}">
<Button.Content>
<FontIcon
x:Name="PlayButtonIcon"
FontSize="30"
Glyph="" />
</Button.Content>
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="F3" />
</Button.KeyboardAccelerators>
</Button>
public MainPage()
{
this.InitializeComponent();
Window.Current.Dispatcher.AcceleratorKeyActivated += AccelertorKeyActivedHandle;
}
private void AccelertorKeyActivedHandle(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
if (args.EventType.ToString().Contains("Down"))
{
if (args.VirtualKey == Windows.System.VirtualKey.F3)
{
// do something you want
}
}
}
<MediaElement Name="mediaPlayerElement"
AreTransportControlsEnabled="True"
Stretch="UniformToFill" Height="100" Width="400">
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
var source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/xxx"));
// Create a configurable playback item backed by the media source
var playbackItem = new MediaPlaybackItem(source);
MediaPlayer player = new MediaPlayer();
MediaPlaybackList lists = new MediaPlaybackList();
lists.Items.Add(playbackItem);
player.Source = lists;
}