MediaElement 是否仅在嵌入 XAML 代码时才播放?

2024-04-14

我有一个声音播放器类,根本没有任何视觉效果,我正在尝试使用MediaElement播放我的声音。在所有的测试项目中,MediaElement嵌入到 XAML 代码中,它工作得很好。但是,在我的纯代码版本中,即使文件已完美加载(我可以在调试器中看到),也根本不会播放任何内容。我正在做以下事情:

public class MySoundPlayer
{
    private MediaElement player = new MediaElement();

    public MySoundPlayer()
    {
        player.LoadedBehavior = MediaState.Manual;
        player.UnloadedBehavior = MediaState.Stop;
        player.Volume = 1.0;
        player.MediaEnded  += player_MediaEnded;
        player.MediaOpened += playerr_MediaOpened;
        player.MediaFailed += player_MediaFailed;
    }

    private void player_MediaEnded(object sender, EventArgs e)
    {
        player.Stop();
        Debug.WriteLine("Stopped");
     }

    private void player_MediaOpened(object sender, EventArgs e)
    {
        Debug.WriteLine("Opened");
    }

    private void player_MediaFailed(object sender, ExceptionRoutedEventArgs e)
    {
        Debug.WriteLine("Failed");
    }

    public void PlayFile(string fileName, bool loop)
    {
        player.Source = new Uri(fileName, UriKind.RelativeOrAbsolute);
        player.Play();
        player.Volume = 1.0;
    }
}

我仔细检查了该文件是否存在(它确实存在)(甚至已正确加载),并且我的声音已打开。 :-) 另外,当我改变MediaElement by SoundPlayer,它工作得很好。我能发现的唯一区别是我没有将其嵌入到 XAML 代码中。这是一个要求吗?


为了工作,MediaElement 必须是应用程序逻辑树的一部分,因此必须添加到应用程序中的某个容器(Grid、StackPanel)中。

您可以通过 XAML 添加 MediaElement(就像您之前所做的那样),也可以在运行时通过

LayoutRoot.Children.Add(player);

您应该使用而不是使用 MediaElement媒体播放器 http://msdn.microsoft.com/en-us/library/system.windows.media.mediaplayer.aspx班级。这将在不将其附加到 XAML 的情况下工作(至少对我来说)。

MediaPlayer player = new MediaPlayer();
player.Open(new Uri(fileName, UriKind.RelativeOrAbsolute));
player.Play();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MediaElement 是否仅在嵌入 XAML 代码时才播放? 的相关文章

随机推荐

  • 如何在linux中查找包含字符串的行[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Linux 中有一个文件 我想显示该文件中包含特定字符串的行 该怎么做 通常的方法是使用grep https linux die n
  • Android 4.0 添加日历和事件

    我想在android 4 0及以上版本的设备中添加日历事件 目前我正在使用以下代码添加事件 if android os Build VERSION SDK INT lt 7 Uri calendars Uri parse content c
  • 如何使用摄像头直播作为活动背景?

    我正在尝试制作一个应用程序 其中我需要使用相机实时馈送作为背景 我知道这是一件愚蠢的事情 但无能为力 这是客户的要求 我尝试过使用SurfaceView但到目前为止还没有成功 到目前为止 我在 Stack Overflow 上发现的更多内容
  • 从conda为pip3创建requirements.txt

    我通常使用 conda 来管理我的环境 但现在我正在进行的项目需要比我的笔记本电脑更多的马力 因此 我尝试使用我大学的配备新英特尔至强处理器的工作站 但我没有管理员权限 而且工作站没有 conda 所以我被迫使用 virtualenv 和
  • 公共运算符 new、私有运算符删除:使用 new 时出现 C2248“无法访问私有成员”

    类具有重载运算符new and delete new是公开的 delete是私人的 在构造此类的实例时 出现以下错误 pFoo new Foo bar example cpp 1 错误 C2248 Foo operator delete 无
  • Android IAB 错误 - 需要身份验证

    我在我的应用程序中测试 In App Billing v3 时遇到问题 我无法使用测试帐户购买任何东西 它总是向我显示一个 Play 商店对话框 Error Authentication is required You must log i
  • Clang 和二进制折叠表达式 — 空参数包的诅咒

    具体来说 Clang 3 6 0 目前由 Coliru 托管 所有这些片段都是从以下位置调用的 int main foo std cout lt lt n n foo 1 2 3 以下代码 template
  • XAML 编辑器的黑色背景

    我目前正在开发一个具有白色文本和透明背景的用户控件 不幸的是 因为 VS2010 中的 XAML 设计视图具有白色背景 所以我看不到我正在设计的任何内容 我已经浏览了我能想到的所有设置对话框 但一直无法找到更改 XAML 设计器背景颜色的设
  • Android:多次播放 AudioTrack 会导致崩溃

    我正在尝试使用 AudioTrack 播放音频缓冲声音 wav 请参阅下面的代码 我需要在Thread下调用这个函数来支持同时播放 在线程下很好 正常播放声音效果很好 但是 如果我连续使用 AudioTrack 执行播放声音 即在完成第一个
  • 点冻结与点列表

    为什么pip list生成比以下更全面的列表pip freeze pip list feedparser 5 1 3 pip 1 4 1 setuptools 1 1 5 wsgiref 0 1 2 pip freeze feedparse
  • 对于大文件,使用 dataURI 创建 iframe 失败,有解决方法吗? [复制]

    这个问题在这里已经有答案了 function openNewWindow strPreviewId let newWindowViewer window open var index mapPreviewIdWithFile strPrev
  • 同一浏览器中不同用户的 Cookie

    网站页面上有一些下拉菜单 用户只有在经过身份验证后才能访问此页面 我想将此值保存到 cookie 中 并在用户返回我的网站时将其设置回下拉菜单 将当前选择的下拉选项值保存到 cookie 并稍后检索它不是问题 但是 如果我由另一个用户在同一
  • 如何在 LaTeX 中扩展文章文档类?

    我真的不需要对默认文章文档类进行大量更改 我想要的只是 重新定义页边距 我希望它们在所有页面上都相同 但与默认值不同 使用扉页 在标题页上添加更多元素 title author and date对我来说还不够 我想要company和公司lo
  • Android 版本是否有最小堆大小?

    许多帖子都谈到了 Android 堆大小 到目前为止我发现最大堆大小的唯一共同点是它至少为 16MB 但这是自 API 3 以来的限制 为了使用更多内存 人们会建议使用 NDK 或任何超出 正常 Android 开发的东西 是否有任何 An
  • 如何更改 d3 图例条目间距/对齐方式

    我有这样一个传说 如您所见 每个图例条目的宽度相同 相反 我希望每个图例条目的宽度根据条目符号和文本的宽度而变化 最终 我希望前导条目文本的末尾与后续条目符号的开头之间的距离相同 换句话说 我希望 OA 和加号之间的距离与 OI 和菱形以及
  • codeigniter 标头中重复的“set-cookie: ci-session”字段

    每次在我的控制器中使用 this gt session gt set userdata 或 this gt session gt set flashdata 时 另一个相同的 Set Cookie ci session 会添加到 http
  • 外键必须映射到概念侧参与外键关联的某些 AssociationSet 或 EntitySet

    我试图在实体框架中使用一对一 主 详细 关系 但是 我收到此错误 从第 254 443 行开始映射片段时出现问题 外键约束 options Advanced FK00 从表 options Advanced ProductID 到表 pro
  • 外部 VS2013 构建错误“错误 MSB4019:找不到导入的项目 <路径>”

    我使用 CMake 文件从命令 proms 构建一个项目 该项目可以找到here http www adobe com devnet xmp html 在构建时我遇到以下错误 C Users User Desktop XMP Toolkit
  • 使用 APISpark Restlet 扩展限制对 Restlet 资源的请求

    这是我限制分钟请求数量的代码 MethodAuthorizer ma createMethodAuthorizer ma setNext router FirewallRule rule new PeriodicFirewallCounte
  • MediaElement 是否仅在嵌入 XAML 代码时才播放?

    我有一个声音播放器类 根本没有任何视觉效果 我正在尝试使用MediaElement播放我的声音 在所有的测试项目中 MediaElement嵌入到 XAML 代码中 它工作得很好 但是 在我的纯代码版本中 即使文件已完美加载 我可以在调试器