C# 媒体文件wp8不使用Uri播放

C# 媒体文件wp8不使用Uri播放,c#,xaml,windows-phone-8,mediaelement,C#,Xaml,Windows Phone 8,Mediaelement,在我的Windows Phone 8项目中,我在Dashboard.xaml上定义了MediaElement,如下所示: 当用户在NewItem.xaml页面上选择音乐文件时,我设置如下值 urimusicitem=newuri(“../Assets/Music/Sleep\u Away.wma”,UriKind.Relative); MyNewItem.MusicFile=MusicItem.ToString(); 使用viewModel将MyNewItem值正确复制到CurrentCo

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


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

urimusicitem=newuri(“../Assets/Music/Sleep\u Away.wma”,UriKind.Relative);
MyNewItem.MusicFile=MusicItem.ToString();
使用viewModel将MyNewItem值正确复制到CurrentCountdownItem

在仪表板上,
OnNavigatedTo()
方法,我有以下代码

MusicMediaElement.Source=新Uri(CurrentCountdownItem.MusicFile,UriKind.Relative);
MusicMediaElement.Play();
但是音乐没有播放,我得到了错误代码3100,它是从
beep_MediaOpened()
方法调用的,如果无法打开文件,就会调用该方法


我已经将音乐文件标记为内容,并且
Asset/Image
文件夹中的其他图像文件按照此逻辑编写良好。我搜索了很多3100错误,并使用Uri访问音乐文件,但没有得到任何工作结果。非常感谢您对从Uri绑定
MediaElement
源属性的任何帮助。

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

urimusicitem=newuri(“/Assets/Music/Sleep\u Away.wma”,UriKind.Relative);
编辑

您正在
OnNavigatedTo()
事件中播放音频。如果您在导航到和beep\u media opened事件处理程序的
on中设置断点,您可以看到
beep\u media opened
事件在执行完
MusicMediaElement.Play()
行后激发。所以问题是显而易见的。尝试播放mp3文件时,未打开该文件

因此,您可以将
on导航中的
musicmediaeelement
的源设置为事件处理程序,然后在
beep_media opened
事件处理程序中播放mp3,如下图所示。这将在媒体元素正确打开文件后播放该文件

受保护的覆盖无效OnNavigatedTo(NavigationEventArgs e)
{
基地。导航到(e);
MusicMediaElement.Source=新Uri(CurrentCountdownItem.MusicFile,UriKind.Relative);
}
私有无效蜂鸣音媒体已打开(对象发送方,路由目标e)
{
MusicMediaElement.Play();
}

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

嘿,这解决了3100错误,但歌曲仍然无法播放。MediaOpen事件是否触发?设置一个断点,请确认是,MediaOpened事件会被触发,MediaFailed也不会被触发。此外,当设置AutoPlay=“True”时,应用程序启动(并在Dashboard.xaml上着陆)后,音乐会立即播放(!!!)。但我希望能够控制它,并仅在用户设置音乐标志时播放它-我正在尝试使用MusicMediaElement.play()…是的,它工作了!我从来没有想到在设置Source属性时调用beep_mediaopend()而不是在设置call Play()方法时调用。谢谢你指出这一点。