在C#中设置媒体元素源

时间:2013-11-18 01:31:09

标签: c# xaml visual-studio-2012 windows-8 media

我正在尝试动态设置视频.mv4文件作为我的Windows 8应用中媒体元素的来源。

   var x = new MediaElement { Source = new Uri("ms-appx:/Assets/vid1.mv4") };

        this.DefaultViewModel["Video"] = x;

我在XAML cs文件中使用此代码,试图将其绑定到XAML页面中设置的Medai元素

<Paragraph Margin="0 40 0 0" LineStackingStrategy="MaxHeight">
                                        <InlineUIContainer>
                                            <MediaElement x:Name="media" 
                                             Source="{Binding Video}" 
                                            Width="500" Height="300" AutoPlay="True" />
                                            </InlineUIContainer>
                                    </Paragraph>

但这不起作用。但是,如果我直接在XAML页面Source="Assets/vid1.m4v"上的媒体元素中设置源,它就可以正常播放。

如何在C#中设置视频以绑定到XAML Windows 8应用页面?

2 个答案:

答案 0 :(得分:2)

你可以试试这个

var x = new MediaElement { Source = new Uri("ms-appx:///Assets/vid1.mv4") };

答案 1 :(得分:2)

<MediaElement Source="{Binding Url}" />无效。您需要使用ContentControl。查看下面给出的代码。

<ContentControl Content="{Binding Video}" />
var x = new MediaElement { AutoPlay = true };
x.Loaded += MediaElement_Loaded;

private async void MediaElement_Loaded(object sender, RoutedEventArgs e)
{
    var file = await KnownFolders.VideosLibrary.GetFileAsync(await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/vid1.mv4"));
    var stream = await file.OpenAsync(FileAccessMode.Read);
    x.SetSource(stream, file.FileType);
    DataContext = x;
}

来自:Binding MediaElement to a ViewModel in a Windows 8 Store App