好的,这就是问题所在。我有一个基本的网站,有按钮。这些按钮通过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中需要做些什么才能触发此方法?当用户点击全屏按钮时?
答案 0 :(得分:0)
与前一个示例相比,从JavaScript调用此代码没有任何区别,只是Silverlight插件对多种内容施加了安全限制,包括全屏模式,打印和文件对话框。这意味着这些操作必须由用户点击或键入内容来启动。解释here at MSDN。
因此,即使用户按下Silverlight插件之外的按钮,您也无法通过JavaScript执行此操作 - 用户必须单击Silverlight插件中的某些内容,例如,按钮会引发您在C#中处理的事件代码,并直接采取行动。
在全屏的情况下,您会发现如果您将HTML / JavaScript内容与Silverlight混合在一起,那么Silverlight全屏很可能根本不会执行您想要的操作 - Silverlight内容将全屏显示,并且HTML内容将不可见。您也无法使用键盘输入(主要是)。我建议在HTML页面中调整Silverlight对象的大小(可能与最大化浏览器窗口相结合)。