【问题标题】:C# UWP One MediaElement multiple screensC# UWP One MediaElement 多屏
【发布时间】:2017-10-16 19:07:42
【问题描述】:

我正在开发简单的音频播放器。到目前为止,我使用的是BackgroundMediaPlayer,但是当后台音频任务添加到应用程序清单时,它似乎不起作用。 MediaElement 有效,但需要添加到屏幕的 XAML 树中。我的应用程序有多个屏幕,这是我的问题。有没有办法使用MediaElement 而不将其绑定到任何屏幕,或者以任何方式将它与多个屏幕一起使用?

谢谢!

【问题讨论】:

    标签: c# uwp mediaelement


    【解决方案1】:

    由于 MediaElement 旨在支持音频和视频,因此需要将其附加到 UI,以便它可以真正显示视频和媒体控制元素。

    如果您正在寻找的只是播放音频,而不需要用户交互(音量控制、播放、暂停、下一步等),那么您可以查看其他类,例如 AudioGraph。您还可以找到示例here

    【讨论】:

    • 谢谢...所以 UWP 没有其他选择,允许播放控制?
    • 我不知道。但是,既然您希望它在不同的页面/窗口上,如果您想要无缝播放,它就不能有 UI 吗?
    【解决方案2】:

    我在没有背景音频的 Windows 8.1 中遇到了这个问题。我通过将 MediaElement 放置到应用程序框架来解决它。

    我创建了一个框架样式

    <Style x:Key="RootFrameStyle" TargetType="Frame">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Frame">
                    <Grid Background="#F3F2F2">
                        <MediaElement x:Name="MediaPlayer"
                                      AudioCategory="BackgroundCapableMedia"
                                      AutoPlay="True" />
                        <ContentPresenter />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    

    并在应用启动时将其分配给框架。我可以得到它

    DependencyObject rootGrid = VisualTreeHelper.GetChild(Window.Current.Content, 0);
    _player = (MediaElement)VisualTreeHelper.GetChild(rootGrid, 0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-04
      • 2016-12-11
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多