通过javascript全屏Silverlight

时间:2012-04-22 21:52:31

标签: javascript silverlight

好的,这就是问题所在。我有一个基本的网站,有按钮。这些按钮通过javascript运行,然后代码进入C#,然后使用Silverlight甘特图控件执行各种操作。

例如,如果我想在gantt控件中进行ZOOM,我会这样:

<button id="zoomIn" onclick="SlZoomIn()">Zoom In</button>

然后在javascript中:

function SlZoomIn() {
    var control = document.getElementById("SilverlightPlugIn");
    control.Content.SilverPlan.JsZoomIn();
}

然后在C#中:

[ScriptableMember]
        public void JsZoomIn()
        {

            try
            {
                gantt.ZoomBySteps(1);
            }
            catch (Exception e)
            {
                MessageBox.Show("Zoom In does not work.");
            }
        }

这一切都很好,但是当我想用需要事件的甘特做事时,这是一个问题。例如,如果我想打印或全屏我的甘特图控件。我怎么能这样做?

在C#中,代码是:

private void fullScreen(object sender, RoutedEventArgs e)
        {
            Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
        }

但是我在javascript中需要做些什么才能触发此方法?当用户点击全屏按钮时?

1 个答案:

答案 0 :(得分:0)

与前一个示例相比,从JavaScript调用此代码没有任何区别,只是Silverlight插件对多种内容施加了安全限制,包括全屏模式,打印和文件对话框。这意味着这些操作必须由用户点击或键入内容来启动。解释here at MSDN

因此,即使用户按下Silverlight插件之外的按钮,您也无法通过JavaScript执行此操作 - 用户必须单击Silverlight插件中的某些内容,例如,按钮会引发您在C#中处理的事件代码,并直接采取行动。

在全屏的情况下,您会发现如果您将HTML / JavaScript内容与Silverlight混合在一起,那么Silverlight全屏很可能根本不会执行您想要的操作 - Silverlight内容将全屏显示,并且HTML内容将不可见。您也无法使用键盘输入(主要是)。我建议在HTML页面中调整Silverlight对象的大小(可能与最大化浏览器窗口相结合)。