我在这里粘贴代码。我的应用程序可以访问音乐库。我没有得到任何例外,但导航后没有播放媒体文件。 Here是在skydrive上托管的项目
MainPage.xaml中
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Button Content="Click Me" Margin="563,357,0,373" Click="Button_Click_1"></Button>
</Grid>
MainPage.xaml.cs中
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
StorageFile file = await KnownFolders.MusicLibrary.GetFileAsync("video.mp4");
Frame.Navigate(typeof(MediaPlayback), file);
}
MediaPlayback.xaml
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<MediaElement x:Name="MyMediaPlayback" Height="350" Width="640"/>
</Grid>
MediaPlayback.xaml.cs
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
StorageFile file = e.Parameter as StorageFile;
try
{
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
MyMediaPlayback.SetSource(stream, file.ContentType);
MyMediaPlayback.Play();
}
catch (Exception)
{
throw;
}
}
答案 0 :(得分:0)
OnNavigatedTo的一个常见问题是它在Loaded事件触发之前被调用,这是控件实际被添加到可视树的时候。我只是猜测,但你可能需要在调用.Play()之前等待页面加载。另外我认为默认情况下MediaElement设置为在设置源时自动播放,因此调用Play可能是不必要的,或者实际上它可能会在这里打破。 MediaElement在Windows 8 RTM中仍然存在许多基本错误,需要仔细使用它们来解决它们。对于调用“等待WaitForLoadedAsync()”以查看是否需要等待该事件而不是在Loaded事件处理程序中搜索导航参数,这也是一个很好的用例。