首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#/XAML metro应用程序上导航后无法播放媒体文件

在C#/XAML metro应用程序上导航后无法播放媒体文件
EN

Stack Overflow用户
提问于 2012-09-27 19:56:28
回答 1查看 390关注 0票数 0

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

MainPage.xaml

代码语言:javascript
复制
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <Button Content="Click Me" Margin="563,357,0,373" Click="Button_Click_1"></Button>
</Grid>

MainPage.xaml.cs

代码语言:javascript
复制
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

代码语言:javascript
复制
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <MediaElement  x:Name="MyMediaPlayback" Height="350" Width="640"/>
</Grid>

MediaPlayback.xaml.cs

代码语言:javascript
复制
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;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2012-09-29 13:22:30

OnNavigatedTo的一个常见问题是,它在被加载的事件激发之前被调用,这是当控件实际被添加到可视化树中时。我只是猜测,但在调用.Play()之前,您可能需要等待页面加载。另外,我认为默认情况下,MediaElement被设置为在设置信号源时自动播放,因此调用play可能是不必要的,或者实际上它可能是这里中断的原因。MediaElement在Windows8RTM中仍然有许多基本的错误,需要谨慎使用来解决这些问题。对于调用"await WaitForLoadedAsync()“来查看是否有必要等待该事件,而不是在已加载的事件处理程序中搜索导航参数,这也是一个很好的用例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12620821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档