我正在使用媒体元素在UWP项目中播放音频,并启用了带有上一个和下一个按钮的TransportControls,这些按钮默认情况下不起作用(按下时什么也没有发生)。 如何在这些按钮上获得“点击”事件?我不知道如何告诉按钮实际播放“下一个”或“上一个”轨道。
答案 0 :(得分:0)
如何在这些按钮上获得“点击”事件?
根据您的要求,您可以收听SystemMediaTransportControls
ButtonPressed
事件,然后可以按下一个或上一个。有关更多信息,请参阅Handle system media transport controls button presses文档。
private async void MyMedia_Loaded(object sender, RoutedEventArgs e)
{
var control = MyMedia.MediaPlayer.SystemMediaTransportControls;
control.ButtonPressed += Control_ButtonPressed;
}
async void Control_ButtonPressed(SystemMediaTransportControls sender,
SystemMediaTransportControlsButtonPressedEventArgs args)
{
switch (args.Button)
{
case SystemMediaTransportControlsButton.Play:
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
mediaElement.Play();
});
break;
case SystemMediaTransportControlsButton.Pause:
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
mediaElement.Pause();
});
break;
default:
break;
}
}
请注意,下一个和上一个按钮仅在播放MediaPlaybackList
时有效。因为这是内部事件,因此仅在实际的MediaPlaybackItem
播放后才触发。 UWP不提供直接单击事件。如果只想听按钮单击事件。您可以自定义MediaTransportControls
。请参阅此document。
public sealed class CustomMediaTransportControls : MediaTransportControls
{
public CustomMediaTransportControls()
{
this.DefaultStyleKey = typeof(CustomMediaTransportControls);
}
protected override void OnApplyTemplate()
{
Button PreviousTrackButton = GetTemplateChild("PreviousTrackButton") as Button;
PreviousTrackButton.Click += PreviousTrackButton_Click;
base.OnApplyTemplate();
}
private void PreviousTrackButton_Click(object sender, RoutedEventArgs e)
{
}
}