uwp - 如何禁用 MediaTransportControls (UWP) 中的下一个和上一个按钮
问题描述
我正在MediaPlayerElement
按如下方式设置播放列表,但是我发现无法禁用previous
或next
跟踪按钮。
更令人惊讶的是,整个事情与操作系统级别的 System Media Trasport Control 集成得非常好,即当我在第一首或最后一首曲目时,上一个和下一个按钮会自动禁用。
<MediaPlayerElement x:Name="MediaPlayerElement" AreTransportControlsEnabled="True">
<MediaPlayerElement.TransportControls>
<MediaTransportControls
IsFullWindowButtonVisible="False"
IsNextTrackButtonVisible="True"
IsPreviousTrackButtonVisible="True"
IsZoomButtonVisible="False" />
</MediaPlayerElement.TransportControls>
</MediaPlayerElement>
var playbackList = new MediaPlaybackList();
var total = (uint)episodes.Count();
uint track = 0;
foreach (var episode in episodes)
{
var mediaPlaybackItem = new MediaPlaybackItem(MediaSource.CreateFromUri(new Uri(episode.MediaUrl)));
var props = mediaPlaybackItem.GetDisplayProperties();
props.Type = Windows.Media.MediaPlaybackType.Music;
props.Thumbnail = RandomAccessStreamReference.CreateFromUri(new Uri(episode.ImageUrl));
props.MusicProperties.Title = episode.Title;
props.MusicProperties.Artist = episode.Author;
props.MusicProperties.AlbumTrackCount = total;
props.MusicProperties.TrackNumber = ++track;
mediaPlaybackItem.ApplyDisplayProperties(props);
playbackList.Items.Add(mediaPlaybackItem);
}
MediaPlayer.Source = playbackList;
mediaPlayerElement.SetMediaPlayer(MediaPlayer);
解决方案
您可以使用MediaPlaybackCommandManager类修改或完全覆盖 SMTC 控件的行为。通过将 Next/Previous 命令的EnablingRule设置为 Never,禁用下一个或上一个命令。有关详细信息,您可以参考文档。
player.CommandManager.NextBehavior.EnablingRule = MediaCommandEnablingRule.Never;
player.CommandManager.PreviousBehavior.EnablingRule = MediaCommandEnablingRule.Never;
推荐阅读
- azure - Azure AD 应用程序:如何使用 microsoft graph API 删除上传的证书?
- gdb - 打印 gdb 中当前语句引用的所有变量符号的值,例如 assert(...) 失败
- bash - 计算时bash中的变量错误
- firebase - 如何在动态链接面板中计算应用安装
- java - 自定义安全表达式
- java - 使用 JavaFX 进行多重处理时如何调用另一个控制器中的方法?
- java - Java Maps:如何打印每个值的出现次数以及共享该值的键
- javascript - 尝试在 Three.js 中将 Go Pro GYRO 数据转换为旋转
- android - Android Studio 在布局预览中不显示状态栏、导航栏和默认工具栏
- python - 打开 Dask 包的客户端仪表板时出错