SilverlightにjQueryのパワーを
ところでこのコードを見てくれ・・・こいつをどう思う?
Page.xaml.cs
private void LayoutRoot_Loaded(object sender, RoutedEventArgs eventArgs) { var data = new[] { new { Name="A", Member=new[] { "Bob", "John" } }, new { Name="B", Member=new[] { "Cozy", "Sally" } } }; new JQuery("#button1").Click(() => { new JQuery("#content").Append( JQuery.Ul.Append( JQuery.Convert(data, o => JQuery.Li.Text(o.Name) .Append( JQuery.Ul.Append( JQuery.Convert(o.Member, m => JQuery.Li.Text(m)) ) .Hide() ) .Click(li => li.Children(":first").SlideToggle(EffectSpeed.Fast)) ) ) ); }); }
こいつをホストするHTMLはこんな感じになる。
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Page for Silverlight.JQuery</title> <style type="text/css"> body { padding: 4px; } #content { width: 300px; height: 200px; border: solid 2px silver; margin-top: 5px; overflow: scroll; } </style> <script type="text/javascript"> function onSilverlightError(sender, args) { if (args.errorType == "InitializeError") { var errorDiv = document.getElementById("errorLocation"); if (errorDiv != null) errorDiv.innerHTML = args.errorType + "- " + args.errorMessage; } } </script> <script type="text/javascript" src="js/jquery-1.2.3.pack.js"></script> </head> <body> <div id='errorLocation' style="font-size: small;color: Gray;"></div> <div id="silverlightControlHost"> <object data="data:application/x-silverlight," type="application/x-silverlight-2-b1" width="0px" height="0px"> <param name="source" value="ClientBin/Silverlight.JQuery.Test.xap"/> <param name="onerror" value="onSilverlightError" /> <param name="background" value="white" /> <a href="http://go.microsoft.com/fwlink/?LinkID=108182" style="text-decoration: none;"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/> </a> </object> <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe> </div> <input type="button" value="button1" id="button1" /> <div id="content"> </div> </body> </html>
う〜ん、勢いでSilverlightからJQueryを呼び出すためのラッパーを作ってみたけど、使い道があるかな。
こいつのソースは以下からダウンロードできます。ご自由にお使いください。