<?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>SDNET - all about .NET and computing &#187; silverlight</title>
	<atom:link href="http://sorin.serbans.net/blog/index.php/tag/silverlight/feed/" rel="self" type="application/rss+xml" />
	<link>http://sorin.serbans.net/blog</link>
	<description>Look at the spoon ... There are no bugs</description>
	<lastBuildDate>Tue, 27 Jul 2010 13:16:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Silverlight datagrid &#8211; doubleclick and enter problems</title>
		<link>http://sorin.serbans.net/blog/index.php/2009/08/28/silverlight-datagrid-doubleclick-and-enter-problems/</link>
		<comments>http://sorin.serbans.net/blog/index.php/2009/08/28/silverlight-datagrid-doubleclick-and-enter-problems/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 14:11:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://sorin.serbans.net/blog/?p=145</guid>
		<description><![CDATA[These days I started looking into Silverlight and unfortunately my time was spent more on finding sollutions than actually implement something. I am so used to ASP and WinForms that somehow the new way of doing things in SilverLight is making me dizzy. I started looking into DataGrid mostly and found two strange things: There [...]]]></description>
			<content:encoded><![CDATA[<p>These days I started looking into Silverlight and unfortunately my time was spent more on finding sollutions than actually implement something. I am so used to ASP and WinForms that somehow the new way of doing things in SilverLight is making me dizzy.</p>
<p>I started looking into DataGrid mostly and found two strange things:</p>
<ol>
<li>There is no double click event on a row</li>
<li>The &lt;enter&gt; key is not caught in the OnKeyDown handler.</li>
</ol>
<p>Of course there are solutions to this and based on some nice community posts I made my own implementation for the datagrid which is listed below<br />
<span id="more-145"></span><br />
<code>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">public</span>&nbsp;<span style="color:#0000FF;">class</span>&nbsp;<span style="color:#2B91AF;">DataEventArgs</span>&nbsp;:&nbsp;<span style="color:#2B91AF;">EventArgs</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;{<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">private</span>&nbsp;<span style="color:#0000FF;">object</span>&nbsp;m_data;<span style="block;"/><br />
<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">public</span>&nbsp;<span style="color:#0000FF;">object</span>&nbsp;Data<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">get</span>&nbsp;{&nbsp;<span style="color:#0000FF;">return</span>&nbsp;m_data;&nbsp;}<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">set</span>&nbsp;{&nbsp;m_data&nbsp;=&nbsp;<span style="color:#0000FF;">value</span>;&nbsp;}<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">public</span>&nbsp;DataEventArgs()&nbsp;:&nbsp;<span style="color:#0000FF;">base</span>()&nbsp;{&nbsp;}<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">public</span>&nbsp;DataEventArgs(<span style="color:#0000FF;">object</span>&nbsp;data)<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<span style="color:#0000FF;">base</span>()<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">this</span>.m_data&nbsp;=&nbsp;data;<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;}<span style="block;"/><br />
<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">public</span>&nbsp;<span style="color:#0000FF;">class</span>&nbsp;<span style="color:#2B91AF;">CustomGrid</span>&nbsp;:&nbsp;<span style="color:#2B91AF;">DataGrid</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;{<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">private</span>&nbsp;<span style="color:#0000FF;">long</span>&nbsp;m_lastTick&nbsp;=&nbsp;0;<span style="block;"/><br />
<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">public</span>&nbsp;<span style="color:#0000FF;">event</span>&nbsp;<span style="color:#2B91AF;">EventHandler</span>&lt;<span style="color:#2B91AF;">DataEventArgs</span>&gt;&nbsp;DoubleClick;<span style="block;"/><br />
<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">public</span>&nbsp;CustomGrid()<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<span style="color:#0000FF;">base</span>()<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">this</span>.MouseLeftButtonUp&nbsp;+=&nbsp;<span style="color:#0000FF;">new</span>&nbsp;<span style="color:#2B91AF;">MouseButtonEventHandler</span>(CustomGrid_MouseLeftButtonUp);<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="block;"/><br />
<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#808080;">///</span><span style="color:#008000;">&nbsp;</span><span style="color:#808080;">&lt;summary&gt;</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#808080;">///</span><span style="color:#008000;">&nbsp;Handles&nbsp;the&nbsp;MouseLeftButtonUp&nbsp;event&nbsp;of&nbsp;the&nbsp;SilverCommanderGrid&nbsp;control.</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#808080;">///</span><span style="color:#008000;">&nbsp;</span><span style="color:#808080;">&lt;/summary&gt;</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#808080;">///</span><span style="color:#008000;">&nbsp;</span><span style="color:#808080;">&lt;param&nbsp;name="sender"&gt;</span><span style="color:#008000;">The&nbsp;source&nbsp;of&nbsp;the&nbsp;event.</span><span style="color:#808080;">&lt;/param&gt;</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#808080;">///</span><span style="color:#008000;">&nbsp;</span><span style="color:#808080;">&lt;param&nbsp;name="e"&gt;</span><span style="color:#008000;">The&nbsp;instance&nbsp;containing&nbsp;the&nbsp;event&nbsp;data.</span><span style="color:#808080;">&lt;/param&gt;</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">void</span>&nbsp;CustomGrid_MouseLeftButtonUp(<span style="color:#0000FF;">object</span>&nbsp;sender,&nbsp;<span style="color:#2B91AF;">MouseButtonEventArgs</span>&nbsp;e)<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span>&nbsp;((<span style="color:#2B91AF;">DateTime</span>.Now.Ticks&nbsp;-&nbsp;m_lastTick)&nbsp;&lt;&nbsp;2310000)<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span>&nbsp;(DoubleClick&nbsp;!=&nbsp;<span style="color:#0000FF;">null</span>)<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoubleClick(<span style="color:#0000FF;">this</span>,&nbsp;<span style="color:#0000FF;">new</span>&nbsp;<span style="color:#2B91AF;">DataEventArgs</span>(e.OriginalSource));<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_lastTick&nbsp;=&nbsp;<span style="color:#2B91AF;">DateTime</span>.Now.Ticks;<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="block;"/><br />
<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#808080;">///</span><span style="color:#008000;">&nbsp;</span><span style="color:#808080;">&lt;summary&gt;</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#808080;">///</span><span style="color:#008000;">&nbsp;Called&nbsp;before&nbsp;the&nbsp;</span><span style="color:#808080;">&lt;see&nbsp;cref="E:System.Windows.UIElement.KeyDown"/&gt;</span><span style="color:#008000;">&nbsp;event&nbsp;occurs.</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#808080;">///</span><span style="color:#008000;">&nbsp;Added&nbsp;to&nbsp;suppress&nbsp;the&nbsp;default&nbsp;behaviour&nbsp;on&nbsp;pressing&nbsp;the&nbsp;enter&nbsp;key.</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#808080;">///</span><span style="color:#008000;">&nbsp;</span><span style="color:#808080;">&lt;/summary&gt;</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#808080;">///</span><span style="color:#008000;">&nbsp;</span><span style="color:#808080;">&lt;param&nbsp;name="e"&gt;</span><span style="color:#008000;">The&nbsp;data&nbsp;for&nbsp;the&nbsp;event.</span><span style="color:#808080;">&lt;/param&gt;</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">protected</span>&nbsp;<span style="color:#0000FF;">override</span>&nbsp;<span style="color:#0000FF;">void</span>&nbsp;OnKeyDown(<span style="color:#2B91AF;">KeyEventArgs</span>&nbsp;e)<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">if</span>&nbsp;(e.Key&nbsp;!=&nbsp;<span style="color:#2B91AF;">Key</span>.Enter)<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">base</span>.OnKeyDown(e);<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">else</span><span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.Handled&nbsp;=&nbsp;<span style="color:#0000FF;">true</span>;<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">this</span>.Focus();<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span style="block;"/><br />
&nbsp;&nbsp;&nbsp;&nbsp;}</code></p>
<p>I will come back later with changes to this class if I find any other problems with it. Although maybe there are no changes to be added but only to our attitude towards development. There is a new style of programming brewing on the horizon and we have to weather it somehow.</p>
]]></content:encoded>
			<wfw:commentRss>http://sorin.serbans.net/blog/index.php/2009/08/28/silverlight-datagrid-doubleclick-and-enter-problems/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
