1

Je travaille sur une petite application Silverlight qui implique le transfert de données entre javascript et Silverlight. J'utilise également le contrôle de terre virtuel silverlight.LocationCollection non étiqueté comme ScriptableType mais peut être instancié dans le script (Comment?)

L'étrangeté que j'ai rencontrée est qu'il est possible d'enregistrer Microsoft.Maps.MapControl.LocationCollection en tant que type créable de script et d'instancier et de le passer à un ScriptableMember. C'est génial, mais je ne peux pas voir où LocationCollection est étiqueté comme ScriptableType - est-ce que je manque quelque chose d'évident.

code dans App.xaml.cs - Application_Startup

HtmlPage.RegisterCreateableType("mapLocationCollection", typeof(Microsoft.Maps.MapControl.LocationCollection)); 

code Javascript qui fonctionne!

var locs = SLPlugin.Content.services.createObject('mapLocationCollection'); 

Je pensais que pour en créer une instance de la classe en JavaScript du type nécessaire pour être étiqueté comme [ScriptableType] et le type doit être enregistré en tant que type createable. Autant que je sache, LocationCollection (ou l'une de ses superclasses) possède cet attribut. Est-ce que quelqu'un peut m'aider à répondre à cette question?

Répondre

0

Non l'attribut ScriptableType spécifie que toutes les propriétés, méthodes et événements publics sur le type sont scriptables. Cela évite simplement de les marquer tous avec ScriptableMember.

+0

Est-ce exact? Le matériel que j'ai dit que la méthode RegisterScriptableObject (System.Windows.Browser.HtmlPage) associe une instance d'un objet scriptable (sa classe est décorée avec ScriptableType) avec un alias de chaîne. Page 324 de Accelerated Silverlight 3 - apress.com. –

+0

Lisez la section des remarques de la documentation: http://msdn.microsoft.com/fr-fr/library/system.windows.browser.scriptabletypeattribute(VS.95).aspx – AnthonyWJones

+0

Merci beaucoup, je peux dormir la nuit maintenant:) –