Как мне получить событие "Click" на этих кнопках?
По вашему требованию вы можете прослушать событие SystemMediaTransportControls
ButtonPressed
, тогда вы можете получить Далее или Предыдущий нажата.Для получения дополнительной информации см. Обработка системных нажатий кнопок управления транспортировкой мультимедиа документа.
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
.Пожалуйста, обратитесь к этому документу .
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)
{
}
}