我正在创建没有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

10-07 18:53
查看更多