我正在创建没有Visual Studio的Silverlight。我只有原始的html,XAML和js(javascript)。
我想做的是将值从XAML传递到javascript。我可以从XAML调用并激活javascript函数。见下文。 canvas元素具有鼠标左键按下事件,该事件在javascript中调用LandOnSpace。
但是我怎么称呼ShowMsg?更准确地说,我该如何将值传递给该调用?通常在javascript中,您可以执行以下操作:ShowMsg(500,700,“您欠我们钱”);
但是,当我在xaml代码中尝试该操作时,它会出错。我相信它抱怨javascript函数不存在。
<Canvas x:Name="btnLandOnSpace" Background="LightGreen" MouseLeftButtonUp="LandOnSpace"
Cursor="Hand" Canvas.Top ="0" Width="70" Height="50">
<TextBlock Text="LandOnSpace" />
</Canvas>
function LandOnSpace(sender, e) { //on server
if (!ShipAnimateActive && !blnWaitingOnServer) {
blnWaitingOnServer = true;
RunServerFunction("/sqgame/getJSLLandOnSpace");
ShowWaitingBox();
};
else {
alert('Waiting on server.');
};
}
function ShowMsg(SintCost, SintRent , SstrChoiceText) {
blnPayChoice = true;
intCost = SintCost;
intRent = SintRent;
strChoiceText = SstrChoiceText; }
最佳答案
如果要从Silverlight 2.0调用javascript函数,则可以在System.Windows.Browser命名空间中使用HtmlPage。
var param = new object[] {"some parameter"};
HtmlPage.Window.Invoke("myfunc",param);
但是,根据上面的示例,您似乎正在使用Silverlight 1.0,其中事件处理程序使用Javascript而不是C#或VB。
您可以移至Silverlight 2.0。您用于服务器页面的服务器不会阻止您使用Silverlight 2.0(或3.0)。
您可以在Google App Engine上完美运行Silverlight 2.0应用程序。
要开始在2.0中进行开发,请在此处下载Silverlight 2工具:http://www.microsoft.com/downloadS/details.aspx?familyid=C22D6A7B-546F-4407-8EF6-D60C8EE221ED&displaylang=en
有关在浏览器内部如何在Silverlight托管代码和Javascript之间进行通信的参考,您可以检查以下页面:http://msdn.microsoft.com/en-us/library/cc645076(VS.95).aspx