<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Everything Silverlight &#187; click</title>
	<atom:link href="http://www.michaelsnow.com/tag/click/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.michaelsnow.com</link>
	<description></description>
	<lastBuildDate>Thu, 28 Apr 2011 21:43:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Silverlight Tip of the Day #17 &#8211; Double Click</title>
		<link>http://www.michaelsnow.com/2010/05/10/silverlight-tip-of-the-day-17-double-click/</link>
		<comments>http://www.michaelsnow.com/2010/05/10/silverlight-tip-of-the-day-17-double-click/#comments</comments>
		<pubDate>Tue, 11 May 2010 03:38:57 +0000</pubDate>
		<dc:creator>Snowman</dc:creator>
				<category><![CDATA[mouse]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[double click]]></category>

		<guid isPermaLink="false">http://www.silverlightdev.net/2010/05/10/silverlight-tip-of-the-day-17-double-click/</guid>
		<description><![CDATA[Silverlight currently has full mouse support for single click. However, double click is a another story. In this tip I will show you how to implement double click. You can apply this technique for an individual control or even your entire page. The key to accomplishing this is to check for two things: Measure the [...]]]></description>
			<content:encoded><![CDATA[<p><font face="Verdana">Silverlight currently has full mouse support for single click. However, double click is a another story. In this tip I will show you how to implement double click. You can apply this technique for an individual control or even your entire page.</font></p>
<p><font face="Verdana">The key to accomplishing this is to check for two things:</font></p>
<ol>
<li><font face="Verdana">Measure the TimeSpan between two mouse clicks. Verify it is less than around 300 milliseconds. </font></li>
<li><font face="Verdana">Make certain the mouse has not moved more than a few pixels. </font></li>
</ol>
<p><font face="Verdana">To demonstrate this I have a DateTime member that tracks the time the first mouse left click occurred. I also keep track of whether this is the first click or not.</font></p>
<div class="csharpcode">
<pre class="alt"><span class="kwrd">public</span> DateTime _lastClick = DateTime.Now; </pre>
<pre><span class="kwrd">private</span> <span class="kwrd">bool</span> _firstClickDone = <span class="kwrd">false</span>; </pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>
  </p>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p><font face="Verdana"></font></p>
<p><font face="Verdana"></font></p>
<p><font face="Verdana">Next, I add an event to monitor for left mouse clicks:</font></p>
<div class="csharpcode">
<pre class="alt"><span class="kwrd">this</span>.MouseLeftButtonDown += <span class="kwrd">new</span> </pre>
<pre>      MouseButtonEventHandler(MainPage_MouseLeftButtonDown); </pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p><font size="2" face="Verdana">Finally, in the event to monitor for mouse left clicks I do the following:</font></p>
<ul>
<li><font face="Verdana"><font size="2">If more than 300 milliseconds has passed or a first click has not occurred yet get a snapshot of the time for the first click.</font> </font></li>
<li><font face="Verdana"><font size="2">If we have clicked already and less than 300 milliseconds has passed verify the mouse has not moved more than a few pixels. If not, we have a double click.</font> </font></li>
</ul>
<p><font face="Verdana"></font></p>
<p><font face="Verdana">The following code demonstrates this technique:</font></p>
<div class="csharpcode">
<pre class="alt"><span class="kwrd">private</span> <span class="kwrd">void</span> MainPage_MouseLeftButtonDown(<span class="kwrd">object</span> sender, MouseButtonEventArgs e) </pre>
<pre>{ </pre>
<pre class="alt">    UIElement element = sender <span class="kwrd">as</span> UIElement; </pre>
<pre>    DateTime clickTime = DateTime.Now; </pre>
<pre class="alt">&#160;</pre>
<pre>    TimeSpan span = clickTime - _lastClick; </pre>
<pre class="alt">&#160;</pre>
<pre>    FirstClickTB.Text = <span class="str">&quot;MS between clicks = &quot;</span> + span.TotalMilliseconds; </pre>
<pre class="alt">&#160;</pre>
<pre>    <span class="kwrd">if</span> (span.TotalMilliseconds &gt; 300 || _firstClickDone == <span class="kwrd">false</span>) </pre>
<pre class="alt">    { </pre>
<pre>        DoubleClickTB.Text = <span class="str">&quot;First click...&quot;</span>; </pre>
<pre class="alt">        _clickPosition = e.GetPosition(element); </pre>
<pre>        _firstClickDone = <span class="kwrd">true</span>; </pre>
<pre class="alt">        _lastClick = DateTime.Now; </pre>
<pre>    } </pre>
<pre class="alt">    <span class="kwrd">else</span> </pre>
<pre>    { </pre>
<pre class="alt">        Point position = e.GetPosition(element); </pre>
<pre>        <span class="kwrd">if</span> (Math.Abs(_clickPosition.X - position.X) &lt; 4 &amp;&amp; </pre>
<pre>            Math.Abs(_clickPosition.Y - position.Y) &lt; 4) </pre>
<pre class="alt">            DoubleClickTB.Text = <span class="str">&quot;Double Click!&quot;</span>; </pre>
<pre>        <span class="kwrd">else</span> </pre>
<pre class="alt">            DoubleClickTB.Text = <span class="str">&quot;Double Click failed due to mouse move!&quot;</span>; </pre>
<pre>        _firstClickDone = <span class="kwrd">false</span>; </pre>
<pre class="alt">    }            </pre>
<pre>} </pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>
  </p>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p><font color="#80ff80" face="Verdana"></font></p>
<pre><font face="Verdana"></font></pre>
<p><font face="Verdana"></font></p>
<pre><font face="Verdana"></font></pre>
</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:21282bdb-9e4f-48c7-869d-833f5f2def30" class="wlWriterEditableSmartContent">
<p>Source: <a href="http://www.michaelsnow.com/wp-content/uploads/2010/06/Tip16_DoubleClick2.zip" target="_blank">Tip16_DoubleClick.zip</a></p>
</div>
<p><font face="Verdana">[silverlight: Tip16_DoubleClick.xap]</font></p>
<pre><font face="Verdana">Thank you, --Mike</font></pre>
<p><font face="Verdana"></font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.michaelsnow.com/2010/05/10/silverlight-tip-of-the-day-17-double-click/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>

