c# - 媒体文件 wp8 无法使用 Uri 播放

标签 c# xaml windows-phone-8 mediaelement

在我的 Windows Phone 8 项目中,我在 Dashboard.xaml 上定义了 MediaElement,如下所示,

<MediaElement x:Name="MusicMediaElement" Height="100" Width="100"                            
                VerticalAlignment="Bottom" Margin="176,100,204,69"                            
                Volume="1"
                Source="{Binding CurrentCountdownItem.MusicFile}"
                MediaFailed="beep_MediaFailed" 
                MediaOpened="beep_MediaOpened"
                AutoPlay="False"/>

当用户在 NewItem.xaml 页面上选择音乐文件时,我将值设置如下,

Uri MusicItem = new Uri("../Assets/Music/Sleep_Away.wma", UriKind.Relative);
MyNewItem.MusicFile = MusicItem.ToString();

使用 viewModel 将 MyNewItem 值正确复制到 CurrentCountdownItem。

在仪表板上,OnNavigateTo() 方法,我有这个代码,

MusicMediaElement.Source = new Uri(CurrentCountdownItem.MusicFile, UriKind.Relative);
MusicMediaElement.Play();

但是音乐无法播放,并且我收到错误代码 3100,该错误代码是从 beep_MediaOpened() 方法调用的,如果无法打开文件,该方法就会被调用。

我已将音乐文件标记为内容,Asset/Image 文件夹中的其他图像文件按照此逻辑运行良好。我搜索了很多 3100 错误并使用 Uri 访问音乐文件,但没有得到任何工作结果。任何有关从 Uri 绑定(bind) MediaElement Source 属性的帮助都值得赞赏。

最佳答案

将您的 MusicItem Uri 更改为以下内容。

Uri MusicItem = new Uri("/Assets/Music/Sleep_Away.wma", UriKind.Relative);

编辑

您正在 OnNavigateTo() 事件中播放音频。如果您在 OnNavigateTobeep_MediaOpened 事件处理程序中设置断点,您可以看到 beep_MediaOpened 事件在 MusicMediaElement.Play()< 之后触发 行已完成执行。所以问题就很明显了。当您尝试播放该文件时,您的 mp3 文件未打开。

因此,您可以在 OnNavigateTo 事件处理程序中设置 MusicMediaElement 的来源,然后在 beep_MediaOpened 事件处理程序中播放 mp3,如下所示。这将在媒体元素正确打开文件后播放文件。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    MusicMediaElement.Source = new Uri(CurrentCountdownItem.MusicFile, UriKind.Relative);
}

private void beep_MediaOpened(object sender, RoutedEventArgs e)
{
    MusicMediaElement.Play();
}

这应该可以解决您的问题。

关于c# - 媒体文件 wp8 无法使用 Uri 播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25915354/

相关文章:

c# - C# 中的可滚动表单,AutoScroll=true 不起作用

c# - 选择角色提供者 - ASP.net 成员(member)提供者

wpf - EventTrigger 无法在 IsEnabledChanged 上触发

c# - 从 phonegap 应用程序的 MainPage.xaml.cs 切换 html 页面

c# - WP8 拍摄 map

c# - Dapper DynamicParameters 返回错误

c# - ListView 项中的多个文本项

c# - 使用 EventTrigger 引发附加事件

c# - 使用 WPF 为多个动态皮肤字典创建别名颜色定义

c# - Windows Phone 8.1 中的 Microsoft.Phone.UserData 在哪里?