首页 > 解决方案 > 如何禁用 MediaTransportControls (UWP) 中的下一个和上一个按钮

问题描述

我正在MediaPlayerElement按如下方式设置播放列表,但是我发现无法禁用previousnext跟踪按钮。

MediaPlayerElement 的上一个和下一个按钮

更令人惊讶的是,整个事情与操作系统级别的 System Media Trasport Control 集成得非常好,即当我在第一首或最后一首曲目时,上一个和下一个按钮会自动禁用。

SMTC 控制视图在此处输入图像描述

<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);

标签: uwpuwp-xaml

解决方案


您可以使用MediaPlaybackCommandManager类修改或完全覆盖 SMTC 控件的行为。通过将 Next/Previous 命令的EnablingRule设置为 Never,禁用下一个或上一个命令。有关详细信息,您可以参考文档

player.CommandManager.NextBehavior.EnablingRule = MediaCommandEnablingRule.Never;
player.CommandManager.PreviousBehavior.EnablingRule = MediaCommandEnablingRule.Never;

推荐阅读