好的,这就是问题所在。我有一个基本的网站,其中有按钮。这些按钮是通过javascript运行的,然后代码进入C#,然后它用Silverlight gantt控件做各种事情。
例如,如果我想放大甘特图控件,我会这样做:
<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.");
}
}这一切都很好,但是当我想用gantt处理需要事件的事情时,这是一个问题。例如,如果我想打印或全屏显示我的甘特图控件。我该怎么做呢?
在C#中,这样做的代码是:
private void fullScreen(object sender, RoutedEventArgs e)
{
Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
}但是我必须在javascript中做什么才能触发这个方法呢?当用户全屏点击按钮时?
发布于 2012-04-23 19:36:47
与前面的示例相比,从JavaScript调用这段代码没有什么不同,只是Silverlight插件对几个方面施加了安全限制,包括全屏模式、打印和文件对话框。这意味着这些操作必须由用户单击或键入某些内容来启动。解释了here at MSDN。
因此,您不能在JavaScript中做到这一点,即使当用户按下Silverlight插件之外的按钮时--用户必须单击Silverlight插件内的某个按钮,例如引发事件的按钮,您可以在C#代码中处理该事件,然后直接执行操作。
在全屏的情况下,您会发现如果您将HTML/JavaScript内容与Silverlight混合在一起,Silverlight全屏很可能无法执行您想要的操作- Silverlight内容将是全屏的,并且HTML内容将不可见。你也不能使用键盘输入(主要是)。我建议在HTML页面中调整Silverlight对象的大小(可以结合最大化浏览器窗口)。
https://stackoverflow.com/questions/10272439
复制相似问题