UWP MediaPlayerElement 防止传输控件重叠视频

Posted

技术标签:

【中文标题】UWP MediaPlayerElement 防止传输控件重叠视频【英文标题】:UWP MediaPlayerElement keep Transport Controls from Overlapping video 【发布时间】:2020-05-19 05:19:21 【问题描述】:

我正在构建一个通用的 Windows 媒体播放器应用程序。试图从 MediaPlayerElement 获取传输控件,使其永远不会与正在播放的视频重叠。目前,控件可以像这样与媒体重叠:

How it works now

我希望播放器窗口看起来像这样:

How I would like it to work

我基本上想在包含视频的框的底部添加边距。有什么方法可以在不处理传输控件的情况下处理包含视频的框?

谢谢!

【问题讨论】:

你的意思是你想让Transport Controls的背景透明? 嘿!我最初的目标是确保传输控件永远不会与我在此处的帮助下实现的视频重叠。但我也一直在尝试使用自定义样式解决传输控制背景问题,但没有成功。有什么想法吗? 【参考方案1】:

UWP MediaPlayerElement 防止传输控件重叠视频

对于场景,您可以通过自定义MediaPlayerElement 样式来实现此功能。请检查以下样式 我在默认样式中添加了两行并将TransportControlsPresenter 放入第二行。

<Style TargetType="MediaPlayerElement">
    <Setter Property="HorizontalAlignment" Value="Stretch" />
    <Setter Property="VerticalAlignment" Value="Stretch" />
    <Setter Property="IsTabStop" Value="False" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="MediaPlayerElement">
                <Grid x:Name="LayoutRoot">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*" />
                        <RowDefinition Height="auto" />
                    </Grid.RowDefinitions>
                    <Border Background="Transparent" />
                    <Image
                        x:Name="PosterImage"
                        Source="TemplateBinding PosterSource"
                        Stretch="TemplateBinding Stretch"
                        Visibility="Collapsed"
                        />
                    <MediaPlayerPresenter
                        x:Name="MediaPlayerPresenter"
                        IsFullWindow="TemplateBinding IsFullWindow"
                        MediaPlayer="TemplateBinding MediaPlayer"
                        Stretch="TemplateBinding Stretch"
                        />
                    <ContentPresenter
                        x:Name="TransportControlsPresenter"
                        Grid.Row="1"
                        Visibility="TemplateBinding AreTransportControlsEnabled"
                        />
                    <Grid x:Name="TimedTextSourcePresenter" />

                </Grid>

            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

【讨论】:

这是完美的。谢谢!我一直在通过在 MediaPlayerPresenter 周围添加边距来做到这一点,但是将 ContentPresenter 放在它自己的网格中效率更高。

以上是关于UWP MediaPlayerElement 防止传输控件重叠视频的主要内容,如果未能解决你的问题,请参考以下文章

MediaPlayerElement 不在 PC 上播放声音,但在手机上播放

UWP - 防止 NavigationViewItemHeader 被剪裁

在 UWP 应用程序中,如何防止 Gamepad 也移动插入符号?

UWP在中国不允许打电话,如何防止在中国部署?

Xamarin Forms - 防止键盘在 UWP、Android、iOS 中的条目焦点上显示

UWP游戏防内存修改器的方法