2012-02-13 64 views
1

我有以下的(2)“ScriptableMember”类型在我的Silverlight控件:通过HTML桥在Javascript我可以在Silverlight中的脚本成员属性中的JavaScript中设置实例属性吗?

<ScriptableMember()> 
Public Property MType As MyCustomType 

<ScriptableMember()> 
Public Property Message As String 

这里的目的显然是为了让曝光。调用“消息”属性是琐碎和完美的作品象下面这样:

var SLControl = document.getElementById("SilverlightControl"); 
SLControl.Content.MyRegisteredControl.Message = 'Hello'; 

但是我有麻烦通过下钻它在JS性能设置实例属性的值。我认为该代码应如下:

SLControl.Content.MyRegisteredControl.MType.Name = 'John'; 

通知我在“M型”如何添加,然后访问名为“名称”的公共属性之一。 MyCustomType类根据需要具有所有适当的'ScriptableMember'属性。

然而,当高于线跑了,我得到以下错误:

“Microsoft JScript运行时错误:对象不支持此属性或方法”

只是正常上'消息'的分配。 JS可以通过一个实例属性向下钻取并分配它的变量吗?如果是这样,我有JS不正确,或者我需要做什么来解决这个问题。谢谢!

回答

0

嗯,我没有得到任何帮助,但我找到了答案是'是'。

月1日我有一个看起来像下面我Silverlight控件实例属性:

<ScriptableMember()> 
Private _MyClass1 As New MyCustomClass 
Public Property MyClass1() As MyCustomClass 
Get 
    Return _MyClass1 
End Get 
Set(ByVal value As MyCustomClass) 
    _MyClass1= value 
End Set 
End Property 

所要求的HTML桥,登记自己控制的类实例的实例,这样我就可以得到从JavaScript访问:

HtmlPage.RegisterScriptableObject("MySLControl", Me) 

现在我以为我需要注册上面的实例属性另一名成员,但我并没有也不需要做。您可以通过暴露为一个脚本成员的主类的实例钻到它如下图所示:

//Get instance of the Silverlight File Upload Control 
var SLControl = document.getElementById("SilverlightControl"); 
if (SLControl != null) 
    //Drill down through the instance property exposed on the Silverlight control 
    SLControl.Content.MySLControl.MyClass1.Name = "John Smith"; 

是扔我想我需要注册一个脚本类型的实例的实例属性的东西,但我不需要那样做。我可以钻取并访问该属性。

以下后扩展了该多一点:
Accessing Instance Properties in Silverlight from JavaScript

相关问题