从Silverlight代码外部获取Silverlight播放器进入全屏模式

时间:2011-11-01 15:31:42

标签: asp.net silverlight

我的asp.net页面中嵌入了一个silverlight mediaElement,如下所示:

<object id="SilverlightPlayer" data="data:application/x-silverlight," 
         type="application/x-silverlight-2" width="753" height="468" >
         <param name="source" value="ClientBin/VideoPlayer.xap"/>  
         <param name="EnableGPUAcceleration" value="true" />
         <param name="OnResize" value="HandleResize" />
         <param name="autoUpgrade" value="true" />
         <param name="onLoad" value="pluginLoaded" />
         <param name="windowless" value="true" />
         <param name="background" value="transparent" />
         <param name="initParams" id="SLInitParameters" />                    
</object>     

我正在实现asp.net端的所有播放器控件并使用javascript桥调用SL方法。除了能够将silverlight播放器置于全屏模式之外,一切正常。 content.IsFullScreen = True;

我试过从javascript调用一个方法:

[ScriptableMember]
public void mediaFullScreen()
{
    var content = Application.Current.Host.Content;
    content.IsFullScreen = !content.IsFullScreen;
}

我在Silverlight代码中放了一个按钮,工作正常。所以,我有javascript调用上面的函数。然后我更改了代码调用SL全屏按钮上的click事件,但是,这也不起作用:

ButtonAutomationPeer peer = new ButtonAutomationPeer((Button)this.fullScreenButton);
IInvokeProvider ip = (IInvokeProvider)peer;
ip.Invoke(); 

我甚至在SL代码中连接了一个事件处理程序来处理标记上的click事件:

HtmlDocument htmlDoc = HtmlPage.Document; 
HtmlElement htmlEle = htmlDoc.GetElementById("buttonFullScreen");
htmlEle.AttachEvent("onclick", new EventHandler(this.OnConvertClicked)); 

无论如何,我可以从我的asp.net代码中的标签进入SL进入全屏模式吗? (使用VS2010和SL4)

谢谢, 戴夫

1 个答案:

答案 0 :(得分:1)

来自full screen support文档:

  

基于Silverlight的应用程序只能进入全屏模式   响应用户发起的操作。

  

限制启用全屏模式的操作可确保用户始终是全屏模式行为的发起者。

其他情况也是如此,例如启动打开的文件对话框。

如果您需要从JavaScript启动,您可能需要转向Silverlight全屏模式的另一种方法,即在浏览器中最大化它。