【问题标题】:How can I easily hide all transport controls in UWP MediaPlayerElement except a few?除了少数之外,如何轻松隐藏 UWP MediaPlayerElement 中的所有传输控件?
【发布时间】:2019-10-08 18:03:54
【问题描述】:

我有一个自动播放视频的 MediaPlayerElement,我希望用户只能在视频中搜索并按下暂停/停止/播放。

看起来我必须将AreTransportControlsEnabled设置为true,然后将所有我不想要的控件一一隐藏,默认情况下所有控件都是可见的。

所以我这样做了:

<MediaPlayerElement x:Name="mediaPlayer" AreTransportControlsEnabled="True">
            <MediaPlayerElement.TransportControls>
                <MediaTransportControls
                    ShowAndHideAutomatically="True"
                    IsFullWindowButtonVisible="False"
                    IsNextTrackButtonVisible="False"
                    IsPreviousTrackButtonVisible="False"
                    IsVolumeButtonVisible="False"
                    IsZoomButtonVisible="False"
                    IsFastForwardButtonVisible="False"
                    IsFastRewindButtonVisible="False"
                    IsPlaybackRateButtonVisible="False"
                    IsRepeatButtonVisible="False"
                    IsSkipBackwardButtonVisible="False"
                    IsSkipForwardButtonVisible="False"
                    Windows10version1803:IsCompactOverlayButtonVisible="False"
                    IsSeekBarVisible="True"
                    IsSeekEnabled="True"
                    IsStopButtonVisible="True"
                    />
            </MediaPlayerElement.TransportControls>
        </MediaPlayerElement>

按照我的口味,这看起来真的很麻烦。是不是有像“hideall = true”这样的设置,然后我只能启用我想要的那些。例如,似乎没有办法同时隐藏“投射到设备”按钮,因此使用当前方法,用户总是会看到这个按钮,我不太喜欢:

有什么想法吗?

【问题讨论】:

    标签: c# uwp controls media-player uwp-xaml


    【解决方案1】:

    您可以通过将 AreTransportControlsEnabled 设置为 false 并在 MediaPlayer 上使用 Play 和 Pause 方法来创建自己的媒体传输控件。

    有关更多信息和示例,请参阅Create custom transport controls

    官方Media transport controls sample将是一个好的开始。

    例如,在官方示例中,如果您不想显示“cast to device”按钮,可以直接删除generic.xaml 中名为CastButton 的AppBarButton

    【讨论】:

      【解决方案2】:

      从 generic.xaml 中删除“CastButton”对我来说并不奏效。我在另一个论坛中找到了删除 Cast to Device 按钮的解决方案: https://social.msdn.microsoft.com/Forums/windows/en-US/e3307864-f194-4197-9f0d-bb2b8cd7228c/uwp-custom-media-transport-controls-hide-custom-buttons

      这是在运行时从 Mediaplayer 中删除“CastButton”AppBarButton 的工作代码。

      public class CustomMediaTransportControls: MediaTransportControls
      {
          protected override void OnApplyTemplate()
          { 
              AppBarButton CastButton = GetTemplateChild("CastButton") as AppBarButton;
      
              var MediaControlsCommandBar = GetTemplateChild("MediaControlsCommandBar") as CommandBar;
              MediaControlsCommandBar.PrimaryCommands.Remove(CastButton); 
              base.OnApplyTemplate();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-06-20
        • 2016-08-14
        • 1970-01-01
        • 2021-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-23
        • 2018-05-23
        相关资源
        最近更新 更多