0

我在这里粘贴代码。我的应用程序能够访问音乐库。我没有收到任何异常,但导航后没有播放媒体文件。是 Skydrive 上托管的项目

主页.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);
}

媒体播放.xaml

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <MediaElement  x:Name="MyMediaPlayback" Height="350" Width="640"/>
</Grid>

媒体播放.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;
    }
}
4

1 回答 1

0

OnNavigatedTo 的一个常见问题是它在 Loaded 事件触发之前被调用,也就是当控件实际添加到可视化树时。我只是猜测,但您可能需要在调用 .Play() 之前等待页面加载。另外我认为默认情况下 MediaElement 设置为在您设置源时自动播放,因此调用 Play 可能是不必要的,或者实际上它可能是这里的中断。MediaElement 在 Windows 8 RTM 中仍然存在许多基本错误,需要谨慎使用以解决这些错误。这也是调用“await WaitForLoadedAsync ()”以查看是否需要等待该事件而不是在 Loaded 事件处理程序中寻找导航参数的绝佳用例。

于 2012-09-29T05:22:30.240 回答