javascript - 如何调用 javascript 函数并从 XAML/Silverlight 传递值?

标签 javascript silverlight xaml syntax function

我在没有 Visual Studio 的情况下创建 silverlight。我只有原始 html、XAML 和 js (javascript)。

我想要做的是将值从 XAML 传递到 javascript。我可以从 XAML 调用和激活 javascript 函数。见下文。 canvas 元素有一个鼠标左键弹起事件,它在 javascript 中调用 LandOnSpace。

但是我该如何调用 ShowMsg?或者更准确地说,我将如何将值传递给该调用?通常在 javascript 中你可以这样: ShowMsg(500, 700, "you owed us money");

但是当我在 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

关于javascript - 如何调用 javascript 函数并从 XAML/Silverlight 传递值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1012498/

相关文章:

javascript - 在 jquery 提交函数中分配全局变量并传递给正则表达式函数

javascript - 元素类型无效 : expected a string or a class/function but got: undefined

c# - Silverlight WrapPanel 不会在 Accordion 内部垂直拉伸(stretch)

c# - 如何拖放 DataGrid 列标题?

c# - 如何在运行时更改按钮的背景图像?

c# - 如何在 C# 中评估 Javascript? (需要获取网页的所有链接,包括 java 脚本生成的链接)

javascript - 为什么 javascript 替换会抛出错误

silverlight - 测量 Silverlight 图表加载时间

wpf - 实时应用程序的 MVVM 设计

c# - 制作带圆角的 WPF 组合框