2014-02-21 1 views
0

이것은 처음 xaml에서 프로그래밍하는 것이며 코드 뒤에 비디오를 삽입하려고하지만 디스플레이가 검정색으로 표시되지 않았습니다. 너희들이 도와 줘서 고마워하는 걸 도와 줄 수있어.XAML 비디오 삽입이 표시되지 않았습니다.

이것은 내 xaml.cs 코드입니다.

namespace App_Videos_Test 
{ 

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 

     this.InitializeComponent(); 
     PlayVideo(); 

    } 

    private async void PlayVideo() 
    { 
     string VideoUrl = "http://www.youtube.com/watch?v=2rJwYN_SmOU"; 
     var url = await YouTube.GetVideoUriAsync(VideoUrl, YouTubeQuality.Quality360P); 
     var YoutubePlayer = new MediaElement(); 
     YoutubePlayer.Source = url.Uri; 
    } 

    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
    } 
    } 
} 

그리고 이것은 내 xaml 코드입니다.

<Grid x:Name="grdVideo" Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> 
    <MediaElement x:Name="meTestVideo" HorizontalAlignment="Left" Height="578" Margin="188,128,0,0" VerticalAlignment="Top" Width="1000"/> 
</Grid> 

답변

1

코드 뒤에는 MediaElement 구성 요소가 새로 생성되어 비디오를 재생하게됩니다.

아마 당신이 원하는 것은 아마도 XAML에서 만든 MediaElement (즉, meTestVideo)에서 비디오를 재생하는 것입니다. 당신의 PlayVideo() 방법에서 은이 같은 기존 MediaElement에 뭔가를 참조 할 :

private async void PlayVideo() 
    { 
     string VideoUrl = "http://www.youtube.com/watch?v=2rJwYN_SmOU"; 
     var url = await YouTube.GetVideoUriAsync(VideoUrl, YouTubeQuality.Quality360P); 
     meTestVideo.Source = url.Uri; 
    } 
+0

이 오류가 발생합니다. 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. 내가 바로 개체를 만들 예정/ – Mikasuki

+0

그것을 디버깅 ... 어떤 개체가 null입니까? XAML에서 MediaElement 형식의 개체를 만들고 있으므로 실제로 오류를 일으키는 개체인지 확인하십시오. 'GetVideoUriAsync' 메소드를 수행하고있는'YouTube' 객체는 무엇입니까? 정적 메소드인가, 아니면'YouTube' 객체를 인스턴스화해야합니까? 미안 해요. 코드를 많이 사용하지 않고 MediaElement 구성 요소를 사용한 적이 없는데 근본적인 문제는 두 개의 MediaElement를 만드는 것입니다. 하나는 코드 뒤에, xaml에는 하나를 만들고 코드 뒤에있는 비디오를 재생하는 것입니다. – Mashton

+0

동영상은 YouTube 사이트에서 가져옵니다. 동영상을 실행하면 가정됩니다. – Mikasuki

1

나는 @Mashton에 동의합니다. 또 다른 문제는 질문에 대한 실제 대답이 아니라 팁입니다. MediaElement과 작업 할 때는 특히 개발 단계에서 항상 MediaFailed 이벤트를 처리하십시오.

미디어 파일로드와 관련된 오류가 발생하면 알림 메시지가 표시되며 빈 MediaElement 컨트롤을보고 무슨 일이 일어 났는지 궁금하지 않고 유익한 오류 메시지가 표시됩니다. 이 경우 MediaElement은 예외를 발생시키지 않으므로 대신 MediaFailed 이벤트를 발생시킵니다.

meTestVideo.MediaFailed += meTestVideo_MediaFailed; 
void meTestVideo_MediaFailed(object sender, ExceptionEventArgs e) 
{ 
    MessageBox.Show(String.Format("Media failed : {0}", e.ErrorException.InnerException)); 
} 
관련 문제