0

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

例如,如果我想放大甘特图控件,我会这样:

<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中做什么才能触发这个方法?当用户点击按钮全屏?

4

1 回答 1

0

与您之前的示例相比,从 JavaScript 调用此代码没有什么不同,除了 Silverlight 插件对几件事施加了安全限制,包括全屏模式、打印和文件对话框。这意味着这些操作必须由用户单击或键入某些内容来启动。在 MSDN 上进行了解释。

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

在全屏的情况下,如果您将 HTML/JavaScript 内容与 Silverlight 混合,您会发现 Silverlight 全屏很可能根本不会做您想要的 - Silverlight 内容将是全屏的,而 HTML 内容将不可见。您也不能使用键盘输入(大多数情况下)。我建议在 HTML 页面中调整 Silverlight 对象的大小(可能结合最大化浏览器窗口)。

于 2012-04-23T11:36:46.800 回答