2012-07-04 21 views
4

我有以下XAML:YouTube上播放全屏幕中WebBrowser控件

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 

<Grid> 

    <WebBrowser x:Name="webBrowser1"/> 

</Grid> 

我嘗試播放YouTube視頻。這是我曾嘗試:

this.webBrowser1.Source = new Uri("http://youtube.googleapis.com/v/L8bE5-g8VC0"); 

這一個顯示YouTube播放器與所有播放器控件。但是全屏按鈕不起作用。我點擊它,但玩家不會全屏。按鈕變得剛剛被禁用。

我自己也嘗試這一個:

this.webBrowser1.Source = new Uri("http://www.youtube.com/embed/L8bE5-g8VC0"); 

這也與所有播放器控件顯示YouTube播放器。全屏按鈕工作正常。但是,當我再次訪問此視頻或其他視頻時(通過設置來源屬性),播放器按鈕消失。要再次查看播放器按鈕,我需要爲IE刪除臨時Internet文件。我可以在播放視頻前每次刪除臨時文件,但這對我來說不是解決方案。

我正在運行Windows 7 64位並使用WPF 4.0。我想要的是在我的WebBrowser中顯示YouTube播放器並且全屏按鈕正常工作。任何人有一些想法?

+0

我不知道答案。但我認爲有兩種方法可以做到這一點。 1)採取當前PC的屏幕分辨率,並擴大與GDI +/WPF的webBrowser的大小或... 2)嘗試使用JavaScript的webbrowser組件可以處理該js代碼,以提高嵌入flash對象的全屏。有趣的問題.. –

回答

8

解決方案,它爲我工作 - 建立一個小的HTML頁面嵌入視頻播放器:

public static class WebBrowserExtensions 
{ 
    private static string GetYouTubeVideoPlayerHTML(string videoCode) 
    { 
     var sb = new StringBuilder(); 

     const string YOUTUBE_URL = @"http://www.youtube.com/v/"; 

     sb.Append("<html>"); 
     sb.Append(" <head>"); 
     sb.Append("  <meta name=\"viewport\" content=\"width=device-width; height=device-height;\">"); 
     sb.Append(" </head>"); 
     sb.Append(" <body marginheight=\"0\" marginwidth=\"0\" leftmargin=\"0\" topmargin=\"0\" style=\"overflow-y: hidden\">"); 
     sb.Append("  <object width=\"100%\" height=\"100%\">"); 
     sb.Append("   <param name=\"movie\" value=\"" + YOUTUBE_URL + videoCode + "?version=3&amp;rel=0\" />"); 
     sb.Append("   <param name=\"allowFullScreen\" value=\"true\" />"); 
     sb.Append("   <param name=\"allowscriptaccess\" value=\"always\" />"); 
     sb.Append("   <embed src=\"" + YOUTUBE_URL + videoCode + "?version=3&amp;rel=0\" type=\"application/x-shockwave-flash\""); 
     sb.Append("     width=\"100%\" height=\"100%\" allowscriptaccess=\"always\" allowfullscreen=\"true\" />"); 
     sb.Append("  </object>"); 
     sb.Append(" </body>"); 
     sb.Append("</html>"); 

     return sb.ToString(); 
    } 

    public static void ShowYouTubeVideo(this WebBrowser webBrowser, string videoCode) 
    { 
     if(webBrowser == null) throw new ArgumentNullException("webBrowser"); 

     webBrowser.NavigateToString(GetYouTubeVideoPlayerHTML(videoCode)); 
    } 
} 

用法:

this.webBrowser1.ShowYouTubeVideo("L8bE5-g8VC0"); 
+0

哇,它的工作。謝謝 :) –

相關問題