キノコの自省録

テクノロジーとコンテンツの融合を目指して

【Web技術】getHost()が動かない - Silverlight

SilverlightXAMLに対して、
動的にオブジェクトを追加する場合、
createFromXaml()
を使って行うのが一般的なようです。

例えば、こんな感じです。


function onLoaded(sender, eventArg) {
var slControl = sender.getHost();
var t = slControl.content.createFromXaml('<TextBlock Text="こんにちは" />');
canvas.Children.Add(t);
}
Silverlightの公式ヘルプを始め、
似たようなコードが数多く紹介されていますが…
なぜかgetHost()が失敗します。怜
Silverlight2 Beta2でXAPを作成するタイプの、
要するにManaged JScriptが原因なのでしょうか?

原因不明のまま諦めてしまいましたが、
代替手段としてXamlReaderを使いました。
一応紹介しておきます。


Import("System.Windows.Markup.XamlReader");
function onLoaded(sender, evedntArg) {
var text = '<TextBlock Text="こんにちは"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />';
var textObj = XamlReader.Load(text);
sender.Children.Add(textObj);
}
senderの子要素としてTextBlockを追加する筈です。
また、TextBlock(トップ要素)にネームスペースを定義してあげないと失敗します。