javascript - 在 Silverlight 中如何附加到 ScriptObject 上的事件?

标签 javascript silverlight xaml scripting

HtmlObject 提供了所有必要的功能来为脚本和 DOM 事件注册托管事件处理程序,但是如果您需要监听的类不作为 DOM 元素存在,而是一个脚本变量(通过 ScriptObject 引用),该怎么办?

最佳答案

javascript 对象不支持附加事件的概念。然而,它可能支持一个属性的概念,该属性持有对函数的引用,如果分配,将在特定点调用该函数。

我猜你有这样的对象吧?

如果是这样,您使用 ScriptObject SetProperty 方法使用应包含对函数的引用的属性的名称,并且托管方法的委托(delegate)与 Javascript 对象将调用的签名相匹配。

注意以下内容此时未经测试,但应该会让您走上正确的道路。

//Javascript in web page.
var myObj = new Thing();

function Thing()
{
     this.doStuff = function()
     {
         if (this.onstuff) this.onstuff("Hello World");
     }
}

// C# code in a Silverlight app.

class SomeClass
{
    private ScriptObject myObject;
    public SomeClass(ScriptObject theObject)
    {
         myObject = theObject;
         myObject.SetProperty("onstuff", (Action<string>)onstuff);
    } 

    function void onstuff(string message)
    {
         //Do something with message
    }

}

关于javascript - 在 Silverlight 中如何附加到 ScriptObject 上的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/399572/

相关文章:

c# - 当调用 Flush() 时,NLog 是否应该刷新 AsyncTargetWrapper 中所有排队的消息?

silverlight TCP隧道/桥接

c# - 如何将 StackPanel 绑定(bind)到非 ObservableCollection?

c# - 创建我创建的窗口的新实例。多次调用做不同的事情

javascript - $ 不是函数错误

javascript - 如何导入 PEM 格式的 RSA 私钥以用于 WebCrypto?

javascript - 选中复选框时,Google Sheets 将行记录到另一张工作表(同一本书)

javascript - 为什么这个简单的 javascript 语句不能检查变量是否存在?

Silverlight TextBox,移动插入符号位置

c# - 计算点击次数并显示在另一个页面上[Windows Phone c#]