<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.silverlight.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Programming with JavaScript</title><link>http://forums.silverlight.net/forums/16.aspx</link><description>Discussions about programming Silverlight with JavaScript</description><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20416.853)</generator><item><title>Re: Raising events from javascript against silverlight controls</title><link>http://forums.silverlight.net/forums/thread/235480.aspx</link><pubDate>Fri, 19 Jun 2009 12:59:43 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:235480</guid><dc:creator>Gonyoda</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/235480.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=16&amp;PostID=235480</wfw:commentRss><description>&lt;p&gt;I figured out how to raise the OnClick() event of a button control.&lt;/p&gt;
&lt;p&gt;1)&amp;nbsp;Create a new Silverlight class library with a class that inherits from Button: 
&lt;p&gt;[ScriptableType]&lt;br /&gt;&lt;span class="kwd"&gt;public class&lt;/span&gt; MyButton : Button&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwd"&gt;public void&lt;/span&gt; DoClick()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnClick();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;} 
&lt;p&gt;2) Change the XAML to use the new &amp;nbsp;class instead of a button (add a reference to your class library first)&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;&lt;font color="#a31515" size="2"&gt;UserControl&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt;x&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;:&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt;Class&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;=&amp;quot;MyHappySilverlightControl&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt;xmlns&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;br /&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt;xmlns&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;:&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt;x&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt;xmlns&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;:&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt;System&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;=&amp;quot;clr-namespace:System;assembly=mscorlib&amp;quot;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;&lt;font color="#ff0000" size="2"&gt;xmlns&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;:My&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;=&amp;quot;clr-namespace:MyStuff.Controls;assembly=MyStuff&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;My:MyButton Content=&amp;quot;DoSomething&amp;quot; Click=&amp;quot;doSomething_Click&amp;quot; x:Name=&amp;quot;btnDoIt&amp;quot;&amp;gt;&amp;lt;/My:MyButton&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;3) Add a FindControl() function to your code that returns a MyButton object:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font size="2"&gt;
&lt;p&gt;[&lt;/font&gt;&lt;font color="#2b91af" size="2"&gt;&lt;font color="#2b91af" size="2"&gt;ScriptableMember&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;]&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;object&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; FindControl(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; controlname)&lt;br /&gt;{&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;return&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; FindName(controlname);&lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;}&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;4) In javascript (or, better yet, Silvernium) access the control with javascript that looks like this to fire the click event:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;document.getElementById(&amp;#39;MySilverlightControlName&amp;#39;).content.MyUserControl.FindControl(&amp;quot;btnDoIt&amp;quot;).DoClick();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;Presto!&amp;nbsp; You just fired the click event of the button.&amp;nbsp; This works even with buttons bound to command objects instead of Click events.&amp;nbsp; I&amp;#39;m sure that pretty much any protected member (event, prop, etc) of Button can be exposed this way.&amp;nbsp; I&amp;#39;m also sure it can be used to expose methods for other Silverlight controls.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;</description></item><item><title>Re: Raising events from javascript against silverlight controls</title><link>http://forums.silverlight.net/forums/thread/234794.aspx</link><pubDate>Thu, 18 Jun 2009 01:59:30 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:234794</guid><dc:creator>ksleung</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/234794.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=16&amp;PostID=234794</wfw:commentRss><description>Unfortunately you cannot trigger &amp;quot;real&amp;quot; button events.&amp;nbsp; A lot of Silverlight operations -- saving files, opening files, increase isolated storage quota, etc -- must be triggered by a user event, and there is no way to go around it (believe me, a lot of people have tried to no avail &lt;img src="http://silverlight.net/emoticons/emotion-2.gif" alt="Big Smile" /&gt;).&amp;nbsp; If you can&amp;#39;t achieve this inside Silverlight, I doubt you can do it from outside Silverlight (namely Javascript).&amp;nbsp; Of course, I&amp;#39;m not saying it is completely impossible...&amp;nbsp; just not from Silverlight, and not by calling Silverlight from Javascript.&lt;br /&gt;</description></item><item><title>Raising events from javascript against silverlight controls</title><link>http://forums.silverlight.net/forums/thread/234791.aspx</link><pubDate>Thu, 18 Jun 2009 01:33:02 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:234791</guid><dc:creator>Gonyoda</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/234791.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=16&amp;PostID=234791</wfw:commentRss><description>&lt;p&gt;I want to raise an event, like OnClick, from the client Javascript.&lt;/p&gt;&lt;p&gt;I&amp;#39;ve got a silverlight control hosted on a web page that has a button on it, and the button has an onclick event handler.&amp;nbsp; From the javascript, I want to fire the event:&lt;/p&gt;&lt;p&gt;partial xaml:&lt;br /&gt;&amp;lt;Button Click=&amp;quot;okButton_Click&amp;quot; x:Name=&amp;quot;okButton&amp;quot; Width=&amp;quot;75&amp;quot; Height=&amp;quot;25&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Content=&amp;quot;OK&amp;quot;&amp;gt;&amp;lt;/Button&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;java script code:&lt;br /&gt;function clickOKButton() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var slv = document.getElementById(&amp;#39;Xaml&amp;#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var button = xaml.content.root.findName(&amp;quot;okButton&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; // now what?&lt;br /&gt;&amp;nbsp;&amp;nbsp; // I&amp;#39;ve tried:&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; // &amp;nbsp; button.onclick()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; button.click()&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;I know I could &amp;quot;simulate&amp;quot; the onclick by using a [ScriptableMember()] member function in the code-behind, but I&amp;#39;d prefer to avoid having to do that.&amp;nbsp; I&amp;#39;m attempting to test a fairly large silverlight application using Selenium/Silvernium and so far I can get pretty far by setting/getting various properties of the button (or other) controls.&amp;nbsp; But I&amp;#39;m stuck right now since I can&amp;#39;t seem to fire any events to mimic user actions against the silverlight app.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Thanks for any help!&lt;/p&gt;&lt;p&gt;-John &lt;br /&gt;&lt;/p&gt;</description></item></channel></rss>