<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-723611850379109347</id><updated>2011-11-27T17:25:52.730-08:00</updated><category term='Find Visuals'/><category term='LINQ'/><category term='move/drag controls'/><category term='TransformDictionary'/><category term='Binding'/><category term='coding motivation'/><category term='databinding'/><category term='runtime'/><category term='JavaScript classes'/><category term='resizing'/><category term='ClickOnce'/><category term='fun'/><category term='MSBuild'/><category term='RenderTransform'/><category term='TranslateTransform'/><category term='zIndex'/><category term='Silverlight'/><category term='Idiot&apos;s diaries'/><category term='ListView'/><category term='Z order'/><title type='text'>denis morozov</title><subtitle type='html'>code samples &amp;amp; personal notes ...writing down things I forget</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-1703782886550471773</id><published>2011-06-08T08:30:00.000-07:00</published><updated>2011-06-08T08:33:19.119-07:00</updated><title type='text'>cheap fast screen saver looking "under construction"</title><content type='html'>if a view isn't ready for "prime time" poking around but people still would like to have a peek - usually it's just easy to throw a transparent rectangle to make it a "read only" view. So, I was just bored and added a screen saver like animation to it. All it is, is a textbox "Under Construction" floating through the screen rotating.&amp;nbsp;Totally half baked but made my QA/Product laugh.&lt;br /&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Canvas&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="#0C100F0F"&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="canvas"&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="0,0,50,0"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Canvas.Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;EventTrigger&lt;/span&gt; &lt;span class="attr"&gt;RoutedEvent&lt;/span&gt;&lt;span class="kwrd"&gt;="TextBlock.Loaded"&lt;/span&gt; &lt;span class="attr"&gt;SourceName&lt;/span&gt;&lt;span class="kwrd"&gt;="txt"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;EventTrigger.Actions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;BeginStoryboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimation&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;="txt"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                         &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetProperty&lt;/span&gt;&lt;span class="kwrd"&gt;="(TextBlock.RenderTransform).(RotateTransform.Angle)"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                                                 &lt;span class="attr"&gt;From&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="attr"&gt;To&lt;/span&gt;&lt;span class="kwrd"&gt;="360"&lt;/span&gt; &lt;span class="attr"&gt;Duration&lt;/span&gt;&lt;span class="kwrd"&gt;="0:0:50"&lt;/span&gt; &lt;span class="attr"&gt;RepeatBehavior&lt;/span&gt;&lt;span class="kwrd"&gt;="Forever"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimation&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;="txt"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                                                 &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetProperty&lt;/span&gt;&lt;span class="kwrd"&gt;="(Canvas.Left)"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                                                 &lt;span class="attr"&gt;From&lt;/span&gt;&lt;span class="kwrd"&gt;="-25"&lt;/span&gt; &lt;span class="attr"&gt;To&lt;/span&gt;&lt;span class="kwrd"&gt;="900"&lt;/span&gt; &lt;span class="attr"&gt;Duration&lt;/span&gt;&lt;span class="kwrd"&gt;="0:0:50"&lt;/span&gt; &lt;span class="attr"&gt;RepeatBehavior&lt;/span&gt;&lt;span class="kwrd"&gt;="Forever"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimation&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;="txt"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                                                 &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetProperty&lt;/span&gt;&lt;span class="kwrd"&gt;="(Canvas.Top)"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                                                 &lt;span class="attr"&gt;From&lt;/span&gt;&lt;span class="kwrd"&gt;="-25"&lt;/span&gt; &lt;span class="attr"&gt;To&lt;/span&gt;&lt;span class="kwrd"&gt;="1250"&lt;/span&gt; &lt;span class="attr"&gt;Duration&lt;/span&gt;&lt;span class="kwrd"&gt;="0:0:50"&lt;/span&gt; &lt;span class="attr"&gt;RepeatBehavior&lt;/span&gt;&lt;span class="kwrd"&gt;="Forever"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;BeginStoryboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;EventTrigger.Actions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;EventTrigger&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Canvas.Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="txt"&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="under construction"&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="50"&lt;/span&gt; &lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Left&lt;/span&gt;&lt;span class="kwrd"&gt;="550"&lt;/span&gt; &lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Top&lt;/span&gt;&lt;span class="kwrd"&gt;="450"&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                          &lt;span class="attr"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;="75"&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;="Black"&lt;/span&gt; &lt;span class="attr"&gt;Opacity&lt;/span&gt;&lt;span class="kwrd"&gt;="0.5"&lt;/span&gt; &lt;span class="attr"&gt;Cursor&lt;/span&gt;&lt;span class="kwrd"&gt;="Hand"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RotateTransform&lt;/span&gt; &lt;span class="attr"&gt;Angle&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="attr"&gt;CenterX&lt;/span&gt;&lt;span class="kwrd"&gt;="75"&lt;/span&gt; &lt;span class="attr"&gt;CenterY&lt;/span&gt;&lt;span class="kwrd"&gt;="25"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBlock.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Canvas&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;putting this canvas in a grid or whatever parent should do the trick.&amp;nbsp;oh, adding some special key combination to unlock the view so that qa can test (and making them struggle to find what it is) can make a Friday after 3 p.m. lonely afternoon with tumbleweeds rolling through abandoned cubicals more exciting.&lt;br /&gt;To make rotations cooler, I should add dependency properties in the back .cs that would bind to Canvas' Left.From, Left.To, Right.From, etc... and make sure they are generating new values. So that the rotation is random. But that's for the next boring afternoon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-1703782886550471773?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/1703782886550471773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2011/06/cheap-fast-screen-saver-looking-under.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/1703782886550471773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/1703782886550471773'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2011/06/cheap-fast-screen-saver-looking-under.html' title='cheap fast screen saver looking &quot;under construction&quot;'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-4890592042693483681</id><published>2011-05-31T09:29:00.000-07:00</published><updated>2011-05-31T09:29:36.944-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Find Visuals'/><title type='text'>Find Visual Parent &amp; Child</title><content type='html'>&lt;pre class="csharpcode"&gt;Tired of writing these two methods over and over, from now on just going to Copy/Paste them from here :)&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;/pre&gt;&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; T FindVisualParent&amp;lt;T&amp;gt;(UIElement element) &lt;span class="kwrd"&gt;where&lt;/span&gt; T : UIElement&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            var parent = element;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="kwrd"&gt;while&lt;/span&gt; (parent != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                T correctlyTyped = parent &lt;span class="kwrd"&gt;as&lt;/span&gt; T;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (correctlyTyped != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; correctlyTyped;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                parent = VisualTreeHelper.GetParent(parent) &lt;span class="kwrd"&gt;as&lt;/span&gt; UIElement;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; T FindVisualChild&amp;lt;T&amp;gt;(Visual parent) &lt;span class="kwrd"&gt;where&lt;/span&gt; T : Visual&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            T child = &lt;span class="kwrd"&gt;default&lt;/span&gt;(T);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; numVisuals = VisualTreeHelper.GetChildrenCount(parent);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; numVisuals; i++)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                var visual = (Visual)VisualTreeHelper.GetChild(parent, i);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                child = visual &lt;span class="kwrd"&gt;as&lt;/span&gt; T;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (child == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                    child = FindVisualChild&amp;lt;T&amp;gt;(visual);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (child != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; child;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;    &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;    &lt;span class="rem"&gt;//call samples:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;    var dataGrid = FindVisualParent&amp;lt;DataGrid&amp;gt;(cell);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;    var row = FindVisualParent&amp;lt;DataGridRow&amp;gt;(cell);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;    var textBox = FindVisualChild&amp;lt;TextBox&amp;gt;(e.EditingElement);&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-4890592042693483681?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/4890592042693483681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2011/05/find-visual-parent-child.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/4890592042693483681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/4890592042693483681'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2011/05/find-visual-parent-child.html' title='Find Visual Parent &amp; Child'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-2081811486371802721</id><published>2010-12-14T20:31:00.000-08:00</published><updated>2010-12-14T20:35:04.017-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Binding'/><title type='text'>Debugging XAML Binding</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif; font-size: 13px;"&gt;Good tip of the day:&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif; font-size: 10pt;"&gt;To debug XAML Binding you can addreference to Diagnostics from WindowsBase dll to the XAML file,&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif; font-size: 10pt;"&gt;then when binding to some property add PresentationTraceSources.TraceLevel. When you run it check out&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif; font-size: 10pt;"&gt;the output window.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="attr"&gt;Text&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="kwrd"&gt;="{Binding someProperty, diagnostics:PresentationTraceSources.TraceLevel=High}"&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-2081811486371802721?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/2081811486371802721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2010/12/debugging-xaml-binding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/2081811486371802721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/2081811486371802721'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2010/12/debugging-xaml-binding.html' title='Debugging XAML Binding'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-5131741022755689161</id><published>2010-09-16T12:12:00.000-07:00</published><updated>2010-09-16T12:12:35.855-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ListView'/><category scheme='http://www.blogger.com/atom/ns#' term='Binding'/><title type='text'>Binding multiple properties to one XAML element using  WPF MultiBinding</title><content type='html'>&lt;pre class="csharpcode"&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListView.View&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;GridView&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;GridViewColumn&lt;/span&gt; &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;="Address"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;GridViewColumn.CellTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock.Text&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MultiBinding&lt;/span&gt; &lt;span class="attr"&gt;StringFormat&lt;/span&gt;&lt;span class="kwrd"&gt;="{}{0}, {1}"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Binding&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;="Address.City"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Binding&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;="Address.State"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;MultiBinding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBlock.Text&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;           &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;GridViewColumn.CellTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;GridViewColumn&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     ...&lt;br /&gt;     ...&lt;br /&gt;     ...&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-5131741022755689161?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/5131741022755689161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2010/09/binding-multiple-properties-to-one-xaml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/5131741022755689161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/5131741022755689161'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2010/09/binding-multiple-properties-to-one-xaml.html' title='Binding multiple properties to one XAML element using  WPF MultiBinding'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-5759370139145542425</id><published>2010-09-13T11:00:00.000-07:00</published><updated>2010-09-13T11:39:43.947-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ListView'/><title type='text'>ListView SelectedItem color and Alternate row background</title><content type='html'>Lots of examples on how to change ListView SelectedItem color will overwrite the System.Colors.HighlightBrushKey and SystemColors.ControlBrushKey:&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;="myListboxStyle"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Style.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="rem"&gt;&amp;lt;!-- Background of selected item when focussed --&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SolidColorBrush&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;="{x:Static SystemColors.HighlightBrushKey}"&lt;/span&gt; &lt;span class="attr"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;="Red"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;                &lt;br /&gt;        &lt;span class="rem"&gt;&amp;lt;!-- Background of selected item when not focussed --&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SolidColorBrush&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;="{x:Static SystemColors.ControlBrushKey}"&lt;/span&gt; &lt;span class="attr"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;="Green"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Style.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;You can argue whether that's elegant or not, I just didn't want to do that, so below is a slightly different aproach: I create my own element (Border in this case) and change it's color. Also jammed into here alternate background triggers.&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListView&lt;/span&gt; &lt;span class="attr"&gt;ItemContainerStyle&lt;/span&gt;&lt;span class="kwrd"&gt;="{StaticResource ListViewItemStyle}"&lt;/span&gt;&lt;br /&gt;          &lt;span class="attr"&gt;AlternationCount&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;="ListViewItemStyle"&lt;/span&gt; &lt;span class="attr"&gt;TargetType&lt;/span&gt;&lt;span class="kwrd"&gt;="ListViewItem"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="Template"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter.Value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate&lt;/span&gt; &lt;span class="attr"&gt;TargetType&lt;/span&gt;&lt;span class="kwrd"&gt;="ListBoxItem"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Border"&lt;/span&gt; &lt;span class="attr"&gt;SnapsToDevicePixels&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;GridViewRowPresenter&lt;/span&gt; &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Stretch"&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Stretch"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate.Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Trigger&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="IsSelected"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;="Border"&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="Background"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="Blue"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Trigger&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MultiTrigger&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MultiTrigger.Conditions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Condition&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="IsSelected"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Condition&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="ItemsControl.AlternationIndex"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;MultiTrigger.Conditions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;="Border"&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="Background"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="WhiteSmoke"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;MultiTrigger&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MultiTrigger&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MultiTrigger.Conditions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Condition&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="IsSelected"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="false"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;Condition Property="ItemsControl.AlternationIndex" Value="2"&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;MultiTrigger.Conditions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;="Border"&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="Background"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;MultiTrigger&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate.Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Setter.Value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;MSDN shows example:&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Trigger&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="ItemsControl.AlternationIndex"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="Background"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="WhiteSmoke"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Trigger&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Trigger&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="ItemsControl.AlternationIndex"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="Background"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Trigger&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Which will not work for my trigger (since I am using a Border the ControlTemplate). So instead of operating directly on ItemControl.AlternationIndex, I change the background of a different element - Border. &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;pre class="xaml xaml" style="font-family: courier new,courier,monospace;"&gt;&lt;span style="color: maroon;"&gt;&lt;span style="color: maroon;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-5759370139145542425?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/5759370139145542425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2010/09/listview-selecteditem-color-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/5759370139145542425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/5759370139145542425'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2010/09/listview-selecteditem-color-and.html' title='ListView SelectedItem color and Alternate row background'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-6034338694309676570</id><published>2010-07-16T22:50:00.000-07:00</published><updated>2010-07-16T22:52:40.223-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>good old quote</title><content type='html'>I was looking through my grammars book by Daniel I.A.Cohem "Introduction to Computer Theory". Chapter 16 goes into depth on Pushdown Automata Theory with Chomsky Normal Form. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Theorem 21&lt;/b&gt;&lt;br /&gt;If L is a context-free language generated by a Context -free Grammar that includes A-productions, then there is a different context=free grammar that has no A-productions that generates either the whole language &lt;i&gt;L&lt;/i&gt; or else generates the language of all the words in &lt;i&gt;L&lt;/i&gt; that are not &lt;i&gt;A&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;If you never took grammars and after reading this were like what the..? A few pages later in the end of the proof, the author throws this great metaphor to help you understand the rules. I read it again and couldn't help laughing ...and enjoying:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0c343d;"&gt;Those never born need never die.&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0c343d;"&gt;First&amp;nbsp;statistician:&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0c343d;"&gt;" With all the trouble in this world, it would be better if we were never born in the first place."&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0c343d;"&gt;Second&amp;nbsp;statistician:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0c343d;"&gt;"Yes, but how many are so lucky? Maybe one in ten thousand."&lt;/span&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-6034338694309676570?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/6034338694309676570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2010/07/good-old-quote.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/6034338694309676570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/6034338694309676570'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2010/07/good-old-quote.html' title='good old quote'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-5927368505242042995</id><published>2010-07-13T13:18:00.000-07:00</published><updated>2010-07-13T13:19:08.818-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='databinding'/><title type='text'>WPF listbox.SelectedItems.Add doesn't select the items?</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif;"&gt;D'oh, I guess it's binding or ref 101, make sure you iterate through correct items list, which in this case - the bound items. &lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;lets pretend to bind the listBox to some list of states:&lt;/div&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;listBox.ItemSource = somelistOfStates;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;at some point you need to select some states programmatically that come from some other list of states (you get it from some event, for example): &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;foreach&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: #0b5394;"&gt;&lt;/span&gt;(&lt;span style="color: blue;"&gt;var &lt;/span&gt;state &lt;span style="color: blue;"&gt;in &lt;/span&gt;_statesIWantToSelect)&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; listBox.SelectedItems.Add (state);&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Looks right, but doesn't work (does not select the states in the listBox).&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Well, the reason why is that SeletedItems list does not find the state you want it to select in its list.You have to find the corresponding listbox item first then operate on that item not on some other object that doesn't have the same reference: &lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;foreach&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: #073763;"&gt;&lt;/span&gt;(&lt;span style="color: blue;"&gt;var &lt;/span&gt;state &lt;span style="color: blue;"&gt;in &lt;/span&gt;_statesIWantToSelect)&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt;(&lt;span style="color: blue;"&gt;var &lt;/span&gt;item &lt;span style="color: blue;"&gt;in &lt;/span&gt;listBox.Items) &lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt;(((&lt;span style="color: #0b5394;"&gt;State&lt;/span&gt;)item &lt;span style="color: #783f04;"&gt;== &lt;/span&gt;state)&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listBox.SelectedItems.Add(item) &lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-5927368505242042995?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/5927368505242042995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2010/07/wpf-listboxselecteditemsadd-doesnt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/5927368505242042995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/5927368505242042995'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2010/07/wpf-listboxselecteditemsadd-doesnt.html' title='WPF listbox.SelectedItems.Add doesn&apos;t select the items?'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-3961411375785446897</id><published>2009-12-01T11:50:00.000-08:00</published><updated>2009-12-01T13:48:10.079-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>getting started with Silverlight consuming ADO.NET Data Service</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Start new Silverlight project &lt;span style="color: #cccccc;"&gt;(I am using Silverlight 3 here)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://3.bp.blogspot.com/_U9dhgcjAc1A/SxVquuZRYlI/AAAAAAAAAGA/Sz16o-4-fLw/s1600/1.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_U9dhgcjAc1A/SxVquuZRYlI/AAAAAAAAAGA/Sz16o-4-fLw/s320/1.bmp" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Give it a name, click OK.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Then “New Silverlight Application” host comes up.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://3.bp.blogspot.com/_U9dhgcjAc1A/SxVrBEn3NtI/AAAAAAAAAGI/kXEuLywjVqg/s1600/2.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_U9dhgcjAc1A/SxVrBEn3NtI/AAAAAAAAAGI/kXEuLywjVqg/s320/2.bmp" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Click OK.&lt;/span&gt; &lt;span style="font-family: Verdana,sans-serif;"&gt;This will create SilverlightApplication and SilverlightApplication.Web projects in your solution.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Add Add ADO.NET Entity Data Model to your SilverlightApplication.Web project&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://3.bp.blogspot.com/_U9dhgcjAc1A/SxVrLkOtGYI/AAAAAAAAAGQ/6QJLrnEwwqg/s1600/3.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_U9dhgcjAc1A/SxVrLkOtGYI/AAAAAAAAAGQ/6QJLrnEwwqg/s320/3.bmp" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Entry Data Model Wizard will show, select Generate from Database, choose or create your database connection, your database objects.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://1.bp.blogspot.com/_U9dhgcjAc1A/SxVsHM2J2gI/AAAAAAAAAGY/9T27M_eGH5I/s1600/4.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_U9dhgcjAc1A/SxVsHM2J2gI/AAAAAAAAAGY/9T27M_eGH5I/s320/4.bmp" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;Note your entities name, you'll use it later in when adding it to the WebDataService as your data service type &lt;span style="color: #999999;"&gt;(I named mine MyDbEntities)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #999999;"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://3.bp.blogspot.com/_U9dhgcjAc1A/SxVsTCd3HBI/AAAAAAAAAGg/fcyMpfFZY2c/s1600/7.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_U9dhgcjAc1A/SxVsTCd3HBI/AAAAAAAAAGg/fcyMpfFZY2c/s320/7.bmp" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;Add WebDataService to your SilverlightApplication.Web&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://3.bp.blogspot.com/_U9dhgcjAc1A/SxVtb1nYpoI/AAAAAAAAAGo/2F7BgnIpNzk/s1600/5.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_U9dhgcjAc1A/SxVtb1nYpoI/AAAAAAAAAGo/2F7BgnIpNzk/s320/5.bmp" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;In WebDataService.svc.cs add your Entity&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;span style="color: #0b5394;"&gt;public class &lt;/span&gt;WebDataService : &lt;span style="color: #45818e;"&gt;DataService&lt;/span&gt;&lt;span style="color: red;"&gt;&amp;lt;&lt;/span&gt; /* &lt;span style="color: #274e13;"&gt;TODO: put your data source class name here &lt;/span&gt;*/ &lt;span style="color: red;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;span style="color: #0b5394;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;span style="color: #0b5394;"&gt;public class&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;WebDataService :&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt; &lt;span style="color: #45818e;"&gt;DataService&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;span style="color: red;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #134f5c;"&gt;MYDBEntities&lt;/span&gt; &lt;span style="color: red;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;also in the same file there config rights, for now to get things going I’d put “*” in both…&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;config.SetEntitySetAccessRule(&lt;span style="color: #783f04;"&gt;"*"&lt;/span&gt;, &lt;span style="color: #45818e;"&gt;EntitySetRights&lt;/span&gt;.AllRead);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;config.SetServiceOperationAccessRule(&lt;span style="color: #783f04;"&gt;"*"&lt;/span&gt;, &lt;span style="color: #134f5c;"&gt;ServiceOperationRights&lt;/span&gt;.All);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;Build the SilverlightApplication.Web&lt;span style="color: #999999;"&gt; (so that you can reference the service in your SilverlightApplication project)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;Add a Service Reference to SilverlightApplication project (click Discover if need to)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://4.bp.blogspot.com/_U9dhgcjAc1A/SxVvYzz9RhI/AAAAAAAAAGw/21RxIFN_rV0/s1600/6.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_U9dhgcjAc1A/SxVvYzz9RhI/AAAAAAAAAGw/21RxIFN_rV0/s320/6.bmp" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;Finally, done with the setup. Lets add little code:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;In SilverlightApplication project, the &lt;b&gt;MainPage.xaml&lt;/b&gt; the page already has a Grid x:Name=”LayoutRoot”&lt;br /&gt;Add a grid to it:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;span style="color: red;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;span style="color: #0b5394;"&gt;data:DataGrid&lt;/span&gt; &lt;span style="color: red;"&gt;x:Name&lt;/span&gt;="dataGrid"&lt;span style="color: red;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: red; font-family: Verdana,sans-serif; font-size: small;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;data:datagrid x:name="dataGrid"&gt; &lt;/data:datagrid&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;In &lt;b&gt;MainPAge.xaml.cs&lt;/b&gt;:&lt;br /&gt;Create a private field "entities", instanciate it, query, then set the dataGrid.ItemSource to what you got back…&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Notes about the code below:&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;b&gt;1.&lt;/b&gt; entities = new MYDBEntities(new Uri(&lt;span style="color: #660000;"&gt;"http://localhost:3431/WebDataService.svc"&lt;/span&gt;, UriKind.RelativeOrAbsolute));&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;if not sure about the Uri, then right-click on &lt;b&gt;WebDataService.svc&lt;/b&gt; &amp;gt; &lt;b&gt;View in Browser&lt;/b&gt;, to copy the link …also &lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;the port number is just a random port being assigned. If you add your service to IIS, then you can use relative url.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;b&gt;2.&lt;/b&gt; if IntelliSence doesn’t come up, or you're not sure what the name of your entities are &lt;span style="color: #999999;"&gt;(mine is MYDBEntities)&lt;/span&gt;, open &lt;b&gt;Model.Designer.cs&lt;/b&gt; and look for a class that derives from &lt;b&gt;ObjectContext&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;b&gt;3.&lt;/b&gt; var query = entities.users; //users is just a table in my db… user yours&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;Here's the code... &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;data:datagrid x:name="dataGrid"&gt; &lt;/data:datagrid&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="color: #0b5394;"&gt;public partial class&lt;/span&gt; MainPage&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0b5394;"&gt; private &lt;span style="color: #45818e;"&gt;MYDBEntities&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #45818e;"&gt; &lt;/span&gt;entities;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0b5394;"&gt;public&lt;/span&gt; MainPage()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; entities = &lt;span style="color: #0b5394;"&gt;new &lt;/span&gt;MYDBEntities(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0b5394;"&gt;new Uri&lt;/span&gt;(&lt;span style="color: #660000;"&gt;"http://localhost:3431/WebDataService.svc"&lt;/span&gt;,&lt;span style="color: #45818e;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;span style="color: #45818e;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UriKind&lt;/span&gt;.RelativeOrAbsolute));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0b5394;"&gt;var &lt;/span&gt;query = entities.users;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0b5394;"&gt;try&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; query.BeginExecute(c =&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dataGrid.ItemsSource = query.EndExecute(c).ToList();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, query);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; &lt;span style="color: #0b5394;"&gt;catch &lt;/span&gt;(&lt;span style="color: #0b5394;"&gt;Exception &lt;/span&gt;exception)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(exception.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt; &lt;data:datagrid x:name="dataGrid"&gt; &lt;/data:datagrid&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;data:datagrid x:name="dataGrid"&gt; &lt;/data:datagrid&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: x-small;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;that's it, run it, and you should see some data in the grid.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;data:datagrid x:name="dataGrid"&gt; &lt;/data:datagrid&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: black none repeat scroll 0% 0%; color: #ff8000; font-family: Consolas;"&gt;&lt;/span&gt;&lt;span style="font-family: Consolas;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-3961411375785446897?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/3961411375785446897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2009/12/getting-started-with-sliverlight.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/3961411375785446897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/3961411375785446897'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2009/12/getting-started-with-sliverlight.html' title='getting started with Silverlight consuming ADO.NET Data Service'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_U9dhgcjAc1A/SxVquuZRYlI/AAAAAAAAAGA/Sz16o-4-fLw/s72-c/1.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-7373086442674348075</id><published>2009-08-28T15:28:00.000-07:00</published><updated>2009-08-28T15:37:26.876-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Idiot&apos;s diaries'/><title type='text'>Sustainable Mopping</title><content type='html'>&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"  style="color:#CCCCCC;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="color:#CCCCCC;"&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;got to work on Friday morning, this is what I get in my I.M.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="color:#999999;"&gt;(BTW - my dad doesn't speak English&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="color:#999999;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"   style="font-family:'lucida grande';color:#999999;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:08:32 AM] :&lt;span class="Apple-style-span"  style="color:#000000;"&gt; your dad is washing our plywood floors with toilet water!!!!!!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:08:37 AM] &lt;span class="Apple-style-span"  style="color:#000000;"&gt;: he put the mop in the toilet&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:08:51 AM] &lt;span class="Apple-style-span"  style="color:#000000;"&gt;: and then used it to mop the plywood floors&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:11:04 AM] &lt;span class="Apple-style-span"  style="color:#000000;"&gt;: i told him NO!!!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande'; "&gt;[10:11:37 AM]&lt;span class="Apple-style-span"  style="color:#000000;"&gt; : asked him how it's clean&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:11:45 AM] &lt;span class="Apple-style-span"  style="color:#000000;"&gt;: then he lied and said it was the 1st time he did it&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:12:01 AM] &lt;span class="Apple-style-span"  style="color:#000000;"&gt;: and i was suspicious&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:12:21 AM]&lt;span class="Apple-style-span"  style="color:#000000;"&gt; : why would he be taking the mop into the bathroom and flushing the toilet&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:12:24 AM] &lt;span class="Apple-style-span"  style="color:#000000;"&gt;: then i saw him do it&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:12:45 AM]&lt;span class="Apple-style-span"  style="color:#000000;"&gt; : that was the 2nd time&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:12:51 AM] &lt;span class="Apple-style-span"  style="color:#000000;"&gt;: and i yelled at him 'no'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:13:05 AM] &lt;span class="Apple-style-span"  style="color:#000000;"&gt;: he's now washing our plywood floors with water and vinegar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:13:07 AM] &lt;span class="Apple-style-span"  style="color:#000000;"&gt;: same mop&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:13:11 AM]&lt;span class="Apple-style-span"  style="color:#000000;"&gt; : sorry to bother you about that&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;[10:13:21 AM] &lt;span class="Apple-style-span"  style="color:#000000;"&gt;: i just cant believe it&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"   style="font-family:'lucida grande';color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"   style="font-family:'lucida grande';color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-7373086442674348075?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/7373086442674348075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2009/08/sustainable-mopping.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/7373086442674348075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/7373086442674348075'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2009/08/sustainable-mopping.html' title='Sustainable Mopping'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-684822909370908922</id><published>2009-08-21T16:27:00.000-07:00</published><updated>2009-08-22T17:47:05.081-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Idiot&apos;s diaries'/><title type='text'>Nothing to be ashamed off...</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="color:#000066;"&gt;Yesterday going back home on the train I had time to reflect for a couple of minutes until someone stepped on my foot.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="color:#000066;"&gt;This summer presented me with this amazing opportunity to work on myself. Something in me grasps it. Something embraces it.  And, of course, there is another part. The old story begins - that part does not want to go through the turmoil. But not that it doesn’t want it a 100%. It’s just that this part is tired and needs to be re-energized a bit. Once it gets a little breather, it’s becomes less disinterested.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="color:#000066;"&gt;But there is no breather. And this is what is great about this summer. It shattering a naïve outlook I had about myself. About my abilities to work. About my accomplishments in these years efforts. Accomplishments? What’s that? Everything still happens with me. Efforts? What efforts? One effort that I would attempt against one little push of a button? &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="color:#000066;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="color:#000066;"&gt; I learnt to play checkers and make a good move once in a while. What happens when the game changes to chess? Where are the previous simple efforts - the ones that can help me? Can they? If they can’t, then I was going in a completely wrong direction and have to start from the very beginning.  I would like to think that I was working in the right direction. But how little! And, again, how naïvely!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;span class="Apple-style-span"  style="color:#000066;"&gt; I was thinking about all this last night, while my father was trying pair after pair of jeans in the “XXX store”. Right in there by the shelves where jeans were displayed. Replying to my suggestion to use the fitting room with “Nothing to be ashamed off, I am wearing my brand new trousers”.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-684822909370908922?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/684822909370908922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2009/08/nothing-to-be-ashamed-off.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/684822909370908922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/684822909370908922'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2009/08/nothing-to-be-ashamed-off.html' title='Nothing to be ashamed off...'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-1684720485127365367</id><published>2009-08-21T16:04:00.000-07:00</published><updated>2009-08-21T16:17:09.492-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding motivation'/><title type='text'>motivation</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;Been working on this bug for two and a half days. Feeling pretty dumb and down. Got an email from one of the guys who hired me for my first dev position. He writes:&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color:#1F497D;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;i&gt;-I’ll let you in on a secret..   It wasn’t about if you got the answers right or wrong….. anyone can learn that shit.   It’s about showing passion, desire and willingness to try.    That’s what makes a good developer.    Don’t ever lose those qualities.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I gotta remember this more often. Why am I in it? I just wanted to code. That's all. ...going back to that bug.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-1684720485127365367?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/1684720485127365367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2009/08/motivation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/1684720485127365367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/1684720485127365367'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2009/08/motivation.html' title='motivation'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-336007210957291313</id><published>2009-01-22T06:05:00.000-08:00</published><updated>2009-01-22T06:53:38.089-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='databinding'/><title type='text'>XAML - Binding to complex types</title><content type='html'>&lt;div&gt;Lets say you you have a &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;User &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;object &lt;/span&gt;with properties that return simple built-in types:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;string &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Name&lt;/span&gt;, &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;bool &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;IsActive &lt;/span&gt;&lt;/span&gt;...etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;If you bind the controls parent to &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;User, &lt;/span&gt;then with simple types you can do something like this:&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;&lt;span class="Apple-style-span"  style="color: rgb(0, 0, 0);  font-family:Georgia;"&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0); "&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt;TextBlock&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;="{&lt;span class="Apple-style-span" style="color: rgb(255, 102, 0); "&gt;Binding&lt;/span&gt; &lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt;Name&lt;/span&gt;}"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;well, if you add a complex type to the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;User&lt;/span&gt;, such as &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Contact &lt;/span&gt;&lt;/span&gt;of type &lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;ContactInfo &lt;/span&gt;&lt;/span&gt;that has its own set of properties -&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;string &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Address&lt;/span&gt;, &lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;string &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Phone&lt;/span&gt;,  &lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;string &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Email&lt;/span&gt;&lt;/span&gt;,  ...etc. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How do you bind then?&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt;TextBlock&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;="{&lt;span class="Apple-style-span" style="color: rgb(255, 102, 0);"&gt;Binding&lt;/span&gt; &lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt;Contact.Email&lt;/span&gt;}"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;won't work ( overriding ToString() on ContactInfo... or writing a Converter did not work for me)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What did work was:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;settting the DataContext to the complex type property, then setting a binding path on XAML Control's Text, Content (...depending on the control that you are using) to the "inner" Property.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;&lt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt;TextBox &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;DataContext&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;="{&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 0);"&gt;Binding&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt;Contact&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;}"&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;,&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;="{&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 102, 0);"&gt;Binding &lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Path&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;=&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(153, 0, 0);"&gt;Email&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 102, 255);"&gt;}"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-336007210957291313?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/336007210957291313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2009/01/xaml-binding-to-complex-types.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/336007210957291313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/336007210957291313'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2009/01/xaml-binding-to-complex-types.html' title='XAML - Binding to complex types'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-711558052689783196</id><published>2008-04-29T14:24:00.000-07:00</published><updated>2008-05-05T14:17:09.073-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript classes'/><title type='text'>How to create a class in JavaScript</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;color:#660000;"&gt;It turns out that JavaScript does not really support classes - weird... But there is a way to create them. Since everything is a function, create functions that that you need. Think of them as your class private methods. Start by creating a function that represents the constructor. In the constructor create methods and properties that connect to the private functions and variables using the assignment operator.&lt;br /&gt;&lt;br /&gt;For example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="rem"  style="color:#009900;"&gt;//privates&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; firstName;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; lastName;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; isAdmin;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; hours = 0;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"  style="color:#009900;"&gt;//constructor&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;function&lt;/span&gt; Worker(&lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; workingHoursAWeek)&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color:#009900;"&gt; &lt;span class="rem"&gt;//passes personsAge to private var hours&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    hours = workingHoursAWeek;&lt;br /&gt;    &lt;span class="rem"  style="color:#009900;"&gt;//creates properties&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.FirstName = firstName;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.LastName = lastName;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Hours= hours;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.IsAdmin = isAdmin;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="rem"  style="color:#009900;"&gt;//create a method&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.IsBusy = isBusy;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"  style="color:#009900;"&gt;//private function&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;function&lt;/span&gt; isBusy()&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;return&lt;/span&gt; (hours &gt; 40) ? &lt;span class="kwrd"  style="color:#3333ff;"&gt;true&lt;/span&gt; : &lt;span class="kwrd"  style="color:#3333ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:85%;color:#330000;"&gt;&lt;span style="font-family:verdana;color:#660000;"&gt;Store the code in a separate .js file.&lt;br /&gt;To use the class, include it in your .htm &lt;span style="font-family:verdana;color:#660000;"&gt;file&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;color:#660000;"&gt; by passing it to scr &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#330000;"&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;src&lt;/span&gt;&lt;span class="kwrd"  style="color:#3333ff;"&gt;="Worker.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;color:#660000;"&gt;Now you can create an object and use it's properties and methods:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;color:#660000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;color:#660000;"&gt;&lt;span style="color:#339999;"&gt;Worker&lt;/span&gt; &lt;span style="color:#000000;"&gt;denis&lt;/span&gt; = &lt;span style="color:#3333ff;"&gt;new&lt;/span&gt; &lt;span style="color:#339999;"&gt;Worker&lt;/span&gt;&lt;span style="color:#000000;"&gt;(40);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;color:#000000;"&gt;denis.Hours += 5;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color:#3333ff;"&gt;if &lt;/span&gt;&lt;span style="color:#000000;"&gt;(denis.IsBusy)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;color:#000000;"&gt; alert(&lt;span style="color:#990000;"&gt;"help!"&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#990000;"&gt;_________________________________________________________&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:verdana;color:#660000;"&gt;It is always great to see a working sample. Here I am going to use the exercise 11.16 from Deitel's "Internet &amp;amp; World Wide Web - How to program", which strangely does not show you how to create a class in JavaScript.&lt;br /&gt;_________________________________________________________ &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:verdana;color:#660000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#ff6600;"&gt;Step 1.&lt;/span&gt; create a new JavaScript file "AirplaneReservationSystem.js" with the following code:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; SIZE;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; FIRST_CLASS_LIMIT;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; seats;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;function&lt;/span&gt; &lt;span style="color:#339999;"&gt;AirplaneReservationSystem&lt;/span&gt;(size, firstClassLimit)&lt;br /&gt;{&lt;br /&gt;    SIZE = size;&lt;br /&gt;    FIRST_CLASS_LIMIT = firstClassLimit;&lt;br /&gt;    seats = &lt;span class="kwrd"&gt;new&lt;/span&gt; Array(SIZE);&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;for&lt;/span&gt;(var i = 0; i &amp;lt; seats.length; i++)&lt;br /&gt;        seats[i] = &lt;span class="str"&gt;"empty"&lt;/span&gt;;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.ReserveEconomy = reserveEconomy;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.ReserveFirstClass = reserveFirstClass;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Seats = seats;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.IsFull = IsFull;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;function&lt;/span&gt; &lt;span style="color:#339999;"&gt;reserveEconomy&lt;/span&gt;()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; seat = -1;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;for&lt;/span&gt;( &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; i = FIRST_CLASS_LIMIT; i &amp;lt;= SIZE; i++)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt;(seats[i] == &lt;span class="str"&gt;"empty"&lt;/span&gt;)&lt;span class="rem"&gt;//if there are seats available&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;            seats[i] = &lt;span class="str"&gt;"full"&lt;/span&gt;;&lt;br /&gt;            seat = i + 1;&lt;br /&gt;            i = SIZE;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;return&lt;/span&gt; seat;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;function&lt;/span&gt; &lt;span style="color:#339999;"&gt;reserveFirstClass&lt;/span&gt;()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; seat = -1;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;for&lt;/span&gt;( &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; i = 0; i &amp;lt; FIRST_CLASS_LIMIT; i++)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt;(seats[i] == &lt;span class="str"&gt;"empty"&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            seats[i] = &lt;span class="str"&gt;"full"&lt;/span&gt;;&lt;br /&gt;            seat = i + 1;&lt;br /&gt;            i = FIRST_CLASS_LIMIT;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;return&lt;/span&gt; seat;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;function&lt;/span&gt; &lt;span style="color:#339999;"&gt;IsFull&lt;/span&gt;()&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;for&lt;/span&gt;(&lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; i = 0; i &lt;&gt;(seats[i] == &lt;span class="str"&gt;"empty"&lt;/span&gt;)&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;&lt;/span&gt;; &lt;span class="rem"&gt;//found a seat&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;&lt;/span&gt;; &lt;span class="rem"&gt;//plane's full&lt;/span&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-family:verdana;color:#660000;"&gt;&lt;span style="color:#ff6600;"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Step 2.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; create and .htm file where you can use the above class. Here is the code for it:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Excercise 11.16&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#ff0000;"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;src&lt;/span&gt;&lt;span class="kwrd"  style="color:#3333ff;"&gt;="AirplaneReservationSystem.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#ff0000;"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt; color: black;&lt;br /&gt; font-family: Consolas, "Courier New", Courier, Monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt&lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;color:#000000;"&gt;    &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; SIZE = 9;&lt;br /&gt;    &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; FIRST_CLASS_LIMIT = 5;&lt;br /&gt;    &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; airplane = &lt;span class="kwrd"  style="color:#3366ff;"&gt;new&lt;/span&gt; &lt;span style="color:#339999;"&gt;AirplaneReservationSystem&lt;/span&gt;(SIZE, FIRST_CLASS_LIMIT);&lt;br /&gt;    &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; seat;&lt;br /&gt;    &lt;span style="color:#3333ff;"&gt;function&lt;/span&gt; ReserveSeat()&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt;(&lt;span style="color:#336666;"&gt;&lt;span style="color:#339999;"&gt;airplane&lt;/span&gt;.&lt;/span&gt;&lt;span style="color:#990000;"&gt;IsFull&lt;/span&gt;())&lt;br /&gt;            alert(&lt;span class="str"&gt;"Airplane is full"&lt;/span&gt;);&lt;br /&gt;        &lt;span class="kwrd"  style="color:#3333ff;"&gt;else&lt;/span&gt; &lt;span class="rem"&gt;//reserve a seat&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt;(form.ticket[0].&lt;span class="kwrd"&gt;checked&lt;/span&gt;)&lt;span class="rem"&gt;//First Class&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                window.status = &lt;span class="str"&gt;"Reserving First Class ticket..."&lt;/span&gt;;&lt;br /&gt;                seat = &lt;span style="color:#339999;"&gt;airplane.&lt;/span&gt;&lt;span style="color:#990000;"&gt;ReserveFirstClass&lt;/span&gt;&lt;span style="color:#000000;"&gt;();&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt;(seat != -1)&lt;br /&gt;                    window.status = &lt;span class="str"&gt;"Reserved a seat number "&lt;/span&gt; + seat + &lt;span class="str"&gt;" in FirstClass."&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;else&lt;/span&gt; &lt;span class="rem"&gt;//first class is full&lt;/span&gt;&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt;(confirm(&lt;span class="str"&gt;"Can we try to place you in Economy?"&lt;/span&gt;)==&lt;span class="kwrd"&gt;true&lt;/span&gt;)&lt;br /&gt;                    {&lt;br /&gt;                        seat = &lt;span style="color:#339999;"&gt;airplane&lt;/span&gt;.&lt;span style="color:#990000;"&gt;ReserveEconomy&lt;/span&gt;&lt;span style="color:#000000;"&gt;();&lt;/span&gt;&lt;br /&gt;                        window.status = &lt;span class="str"&gt;"Reserved a seat number "&lt;/span&gt; + seat + &lt;span class="str"&gt;" in Economy."&lt;/span&gt;;&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span class="kwrd"  style="color:#3333ff;"&gt;else&lt;/span&gt;&lt;br /&gt;                        alert(&lt;span class="str"&gt;"Next plane leaves in 3 hours"&lt;/span&gt;);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt;&lt;/span&gt;(form.ticket[1].&lt;span class="kwrd"&gt;checked&lt;/span&gt;)&lt;span class="rem"&gt;//Economy&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                window.status = &lt;span class="str"&gt;"Reserving Economy ticket..."&lt;/span&gt;;&lt;br /&gt;                seat = &lt;span style="color:#339999;"&gt;airplane&lt;/span&gt;.&lt;span style="color:#990000;"&gt;ReserveEconomy&lt;/span&gt;();&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt;(seat != -1)&lt;br /&gt;                    window.status = &lt;span class="str"&gt;"Reserved a seat number "&lt;/span&gt; + seat + &lt;span class="str"&gt;" in Economy."&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;else&lt;/span&gt; &lt;span class="rem"&gt;//economy is full&lt;/span&gt;&lt;br /&gt;                {&lt;br /&gt;                    &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt;(confirm(&lt;span class="str"&gt;"Can we try to place you in First Class?"&lt;/span&gt;) == &lt;span class="kwrd"&gt;true&lt;/span&gt;)&lt;br /&gt;                    {&lt;br /&gt;                        seat = airplane.ReserveFirstClass();&lt;br /&gt;                        window.status = &lt;span class="str"&gt;"Reserved a seat number "&lt;/span&gt; + seat + &lt;span class="str"&gt;" in FirstClass."&lt;/span&gt;;&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span class="kwrd"  style="color:#3333ff;"&gt;else&lt;/span&gt;&lt;br /&gt;                        alert(&lt;span class="str"&gt;"Next plane leaves in 3 hours"&lt;/span&gt;);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;else&lt;/span&gt;&lt;br /&gt;                alert(&lt;span class="str"&gt;"Select ticket type before reserving the seat"&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="form"&lt;/span&gt; &lt;span class="attr"&gt;action&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Airline Reservation System&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="radio"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="ticket"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="FirstClass"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;First Class&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="radio"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="ticket"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Economy"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Economy&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="button"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Reserve Seat"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"  style="color:#3333ff;"&gt;="ReserveSeat()"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Result: &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="Result"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-711558052689783196?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/711558052689783196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2008/04/how-to-create-class-in-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/711558052689783196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/711558052689783196'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2008/04/how-to-create-class-in-javascript.html' title='How to create a class in JavaScript'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-2006833875355152402</id><published>2008-04-17T13:42:00.000-07:00</published><updated>2008-04-18T09:58:42.271-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='databinding'/><title type='text'>databind WPF controls sample</title><content type='html'>&lt;span style="font-size:78%;color:#666600;"&gt;It's pretty simple:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#666600;"&gt;Set the controls data context to the object that has the data, then bind specific properties.&lt;br /&gt;Lets assume that you have a class &lt;span style="font-family:courier new;color:#000000;"&gt;User&lt;/span&gt; that has a property &lt;span style="font-family:courier new;color:#000000;"&gt;IsActive&lt;/span&gt; and you want to bind a checkbox to &lt;span style="font-family:courier new;color:#000000;"&gt;user.IsActive&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;In code set the data context (note you can limit the scope to a particular control).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#3333ff;"&gt;this&lt;/span&gt;.DataContext = user;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#666600;"&gt;bind in XAML:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#cc0000;"&gt;&amp;lt;CheckBox &lt;span style="color:#ff0000;"&gt;IsChecked&lt;/span&gt;="{Binding Path=IsActive}"/&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#666600;"&gt;Here's a sample that has a simple user control with a couple of textboxes and checkboxes that use databinding to display data. The control pretends to need some user info. It stores it in one of its properties "CurrentUser". Once the property is populated it, the controls will display it:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;a href="http://bp0.blogger.com/_U9dhgcjAc1A/SAfV7G6zJsI/AAAAAAAAADQ/Gp71B3zIZw4/s1600-h/blogPost5.bmp"&gt;&lt;span style="font-size:78%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5190352307014018754" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_U9dhgcjAc1A/SAfV7G6zJsI/AAAAAAAAADQ/Gp71B3zIZw4/s400/blogPost5.bmp" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#666600;"&gt;First lets create a data container in the form of a class "User".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span class="kwrd"  style="color:#3366ff;"&gt;namespace&lt;/span&gt; BindingSample&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#339999;"&gt;User&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;&lt;/span&gt; Id { &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt;&lt;/span&gt; IsActive { &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt;&lt;/span&gt; IsAdmin { &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;&lt;/span&gt; UserName { &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;&lt;/span&gt; FirstName { &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;&lt;/span&gt; LastName { &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;&lt;/span&gt; Email { &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#999900;"&gt;Then lets create a XAML UserControl - the main thing to note here is the binding code (in yellow): &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#990000;"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;x&lt;/span&gt;:&lt;span style="color:#ff0000;"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;"BindingSample.formUser"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"  style="color:#ff0000;"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;"http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"  style="color:#ff0000;"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#ff0000;"&gt;=&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;"http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"  style="color:#3333ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;CornerRadius&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"5"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"50"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"White"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OuterGlowBitmapEffect&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;GlowColor&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"LightGray"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="rem"&gt;&amp;lt;!-- header --&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"#8AA37B"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Opacity&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;".85"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Horizontal"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"White"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"12"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;u s e r&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#006600;"&gt;&amp;lt;!-- body --&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"10"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"69*"&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"70*"&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"35*"&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"35*"&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"35*"&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"10"&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Auto"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Auto"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Auto"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Auto"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Auto"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#3333ff;"&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"0"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"1"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;HorizontalContentAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Right"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"5"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"#435D36"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;="12"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;login&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"0"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"3"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;ColumnSpan&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"2"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"5"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Horizontal"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FlowDirection&lt;/span&gt;&lt;span class="kwrd"&gt;="RightToLeft"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="{&lt;span style="color:#ff9900;"&gt;Binding&lt;/span&gt; Path=&lt;span style="color:#ff9900;"&gt;Id&lt;/span&gt;}"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"#458B00"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"12"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"#435D36"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"12"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;id&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"1"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"1"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;HorizontalContentAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Right"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"5"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"#435D36"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"12"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#3333ff;"&gt;&amp;amp;&lt;/span&gt;gt;&lt;/span&gt;first name&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"2"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"1"&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt; &lt;/span&gt;&lt;span class="attr"  style="color:#ff0000;"&gt;HorizontalContentAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Right"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"5"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"#435D36"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"12"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;last name&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"3"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"1"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;HorizontalContentAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Right"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"5"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"#435D36"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"12"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;email&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"0"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"2"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"5"&lt;/span&gt;&lt;/span&gt; &lt;strong&gt;&lt;span class="attr"  style="color:#ff0000;"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="{&lt;span style="color:#ff9900;"&gt;Binding&lt;/span&gt; Path=&lt;span style="color:#ff9900;"&gt;UserName&lt;/span&gt;}"&lt;/span&gt;&lt;/strong&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"#458B00"&lt;/span&gt;&lt;/span&gt;  &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;="12"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"1"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid.Column&lt;/span&gt;=&lt;span style="color:#3333ff;"&gt;"2"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;=&lt;span style="color:#3333ff;"&gt;"5"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;&lt;strong&gt;Text&lt;/strong&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;strong&gt;="{&lt;span style="color:#ff9900;"&gt;Binding&lt;/span&gt; Path=&lt;span style="color:#ff9900;"&gt;FirstName&lt;/span&gt;}"&lt;/strong&gt; &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;ColumnSpan&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"3"&lt;/span&gt;&lt;/span&gt;  &lt;span class="attr"  style="color:#ff0000;"&gt;BorderBrush&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"#8FA880"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"12"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"2"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"2"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"5"&lt;/span&gt;&lt;/span&gt; &lt;strong&gt;&lt;span class="attr"  style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{&lt;span style="color:#ff9900;"&gt;Binding&lt;/span&gt; Path=&lt;span style="color:#ff9900;"&gt;LastName&lt;/span&gt;}"&lt;/span&gt;&lt;/strong&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;ColumnSpan&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"3"&lt;/span&gt;&lt;/span&gt;  &lt;span class="attr"  style="color:#ff0000;"&gt;BorderBrush&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"#8FA880"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"12"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"3"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;/span&gt;&lt;span class="attr"  style="color:#ff0000;"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"2"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"5"&lt;/span&gt;&lt;/span&gt; &lt;strong&gt;&lt;span class="attr"  style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{&lt;span style="color:#ff9900;"&gt;Binding&lt;/span&gt; Path=&lt;span style="color:#ff9900;"&gt;Email&lt;/span&gt;}"&lt;/span&gt;&lt;/strong&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;ColumnSpan&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"3"&lt;/span&gt;&lt;/span&gt;  &lt;span class="attr"  style="color:#ff0000;"&gt;BorderBrush&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"#8FA880"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"12"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Horizontal"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"6"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;ColumnSpan&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"4"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"5"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FlowDirection&lt;/span&gt;&lt;span class="kwrd"&gt;="RightToLeft"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CheckBox&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"0,5,15,5"&lt;/span&gt;&lt;/span&gt;   &lt;span class="attr"  style="color:#ff0000;"&gt;BorderBrush&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Transparent"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Transparent"&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt; &lt;/span&gt;&lt;span class="attr"  style="color:#ff0000;"&gt;FlowDirection&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"RightToLeft"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;IsChecked&lt;/span&gt;&lt;span class="kwrd"&gt;="{&lt;span style="color:#ff9900;"&gt;Binding&lt;/span&gt; Path=&lt;span style="color:#ff9900;"&gt;IsAdmin&lt;/span&gt;}" &lt;/span&gt;&lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"12"&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;admin&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CheckBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CheckBox&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"0,5,5,5"&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt; &lt;/span&gt;   &lt;span class="attr"  style="color:#ff0000;"&gt;BorderBrush&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Transparent"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"Transparent"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FlowDirection&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"RightToLeft"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;IsChecked&lt;/span&gt;&lt;span class="kwrd"&gt;="{&lt;span style="color:#ff9900;"&gt;Binding&lt;/span&gt; Path=&lt;span style="color:#ff9900;"&gt;IsActive&lt;/span&gt;}"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"12"&lt;/span&gt;&lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;active&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CheckBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;&lt;span style="font-family:Courier New;color:#000000;"&gt;&lt;span style="color:#666600;"&gt;In control's code, lets create a property CurrentUser, there we can set the data context&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span class="kwrd"  style="color:#3333ff;"&gt;namespace&lt;/span&gt; BindingSample&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#009900;"&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="rem"&gt;/// Interaction logic for formUser.xaml&lt;/span&gt;&lt;br /&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3333ff;"&gt;public&lt;/span&gt;&lt;span style="color:#3333ff;"&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#339999;"&gt;formUser&lt;/span&gt; : &lt;span style="color:#339999;"&gt;UserControl&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"  style="color:#3333ff;"&gt;private&lt;/span&gt; &lt;span style="color:#339999;"&gt;User&lt;/span&gt; currentUser = &lt;span class="kwrd"  style="color:#3333ff;"&gt;new&lt;/span&gt; &lt;span style="color:#339999;"&gt;User&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"  style="color:#3333ff;"&gt;public&lt;/span&gt; formUser()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"  style="color:#3333ff;"&gt;public&lt;/span&gt; &lt;span style="color:#339999;"&gt;User&lt;/span&gt; CurrentUser&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;get &lt;span style="color:#000000;"&gt;{&lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.currentUser; }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.currentUser = &lt;span class="kwrd"  style="color:#3333ff;"&gt;value&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.DataContext = currentUser;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#666600;"&gt;Next step is to create a window and instanciate the control that was created above: (create a new XAML file) and add the control:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#990000;"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt; &lt;span class="attr"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"&gt;="BindingSample.Window1"&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;xmlns:local&lt;/span&gt;&lt;span class="kwrd"&gt;="clr-namespace:BindingSample"&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;="Window1"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="300"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="300"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;local:formUser&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;span style="color:#3333ff;"&gt;"formUserDetail"&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;span style="color:#666600;"&gt;And in code behind, lets populate the user and pass it to the control:&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span class="kwrd"  style="color:#3333ff;"&gt;namespace&lt;/span&gt; &lt;span style="color:#339999;"&gt;BindingSample&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color:#009900;"&gt;  &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="rem"&gt;/// Interaction logic for Window1.xaml&lt;/span&gt;&lt;br /&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#339999;"&gt;Window1&lt;/span&gt; : &lt;span style="color:#339999;"&gt;Window&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"  style="color:#3333ff;"&gt;private&lt;/span&gt; &lt;span style="color:#339999;"&gt;User&lt;/span&gt; user;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"  style="color:#3333ff;"&gt;public&lt;/span&gt; Window1()&lt;br /&gt;        {&lt;br /&gt;           &lt;span style="color:#009900;"&gt; &lt;span class="rem"&gt;/*create a user*/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            user = &lt;span class="kwrd"  style="color:#3333ff;"&gt;new&lt;/span&gt; User();&lt;br /&gt;            user.Id = 987;&lt;br /&gt;            user.IsActive = &lt;span class="kwrd"  style="color:#3333ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;            user.IsAdmin = &lt;span class="kwrd"  style="color:#3333ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;            user.UserName = &lt;span class="str"&gt;"denism"&lt;/span&gt;;&lt;br /&gt;            user.FirstName = &lt;span class="str"&gt;"denis"&lt;/span&gt;;&lt;br /&gt;            user.LastName = &lt;span class="str"&gt;"morozov"&lt;/span&gt;;&lt;br /&gt;            user.Email = &lt;span class="str"&gt;"denis.morozov@this.com"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            InitializeComponent();&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.formUserDetail.CurrentUser = user;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-2006833875355152402?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/2006833875355152402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2008/04/databind-wpf-controls-sample.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/2006833875355152402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/2006833875355152402'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2008/04/databind-wpf-controls-sample.html' title='databind WPF controls sample'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_U9dhgcjAc1A/SAfV7G6zJsI/AAAAAAAAADQ/Gp71B3zIZw4/s72-c/blogPost5.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-3008515562054658546</id><published>2008-02-14T12:19:00.000-08:00</published><updated>2009-06-09T12:00:12.765-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ClickOnce'/><category scheme='http://www.blogger.com/atom/ns#' term='MSBuild'/><title type='text'>ClickOnce - how to update publish.htm with MSBuild</title><content type='html'>&lt;span style="color:#000000;"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;When publishing &lt;strong&gt;ClickOnce&lt;/strong&gt; application using &lt;strong&gt;Visual Studio&lt;/strong&gt;, the &lt;strong&gt;publish&lt;/strong&gt;.&lt;strong&gt;htm&lt;/strong&gt; page is created automatically. If you use &lt;strong&gt;MSBuild&lt;/strong&gt; for publishing, then soon you will realize that &lt;strong&gt;MSBuild&lt;/strong&gt; does not offer same functionality, so you either have to build your own page or use the prebuilt &lt;strong&gt;publish.htm&lt;/strong&gt;, check it into the source control and edit it every time you have a build.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;To automate the process a little bit, I used the prebuilt page that is created by VisualStudio and checked it in my source control. Then used my &lt;strong&gt;MSBuild&lt;/strong&gt; &lt;strong&gt;.proj&lt;/strong&gt; file to update the version and copy it to my publish location. Since HTML is XML, you can use &lt;xmlupdate&gt;task.&lt;/xmlupdate&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;If you are about to use publish.htm created by Visual Studio, there were a couple of things that you should know. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;That publish.htm file probably does not comply with XML standards. So test it. A simple check would be to create a .NET app with these two lines of code:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#339999;"&gt;XmlDocument&lt;/span&gt; &lt;span style="color:#000000;"&gt;xmlDoc&lt;/span&gt; = &lt;span class="kwrd"  style="color:#3333ff;"&gt;new&lt;/span&gt; &lt;span style="color:#339999;"&gt;XmlDocument&lt;/span&gt;();&lt;br /&gt;&lt;span style="color:#000000;"&gt;xmlDoc.Load&lt;/span&gt;&lt;span style="color:#cc0000;"&gt;(&lt;span class="str"&gt;@"C:\Source\WinDTS_NET_3_5\BuildTools\Publish.htm"&lt;/span&gt;&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:85%;color:#000000;"&gt;If it loads, you are good to go. My page did not load. I had a problem with Visual Studio spacers (&lt;strong&gt;"&amp;amp;&lt;span style="color:#000000;"&gt;spns&lt;/span&gt;&lt;/strong&gt;", about 8 of them). Originally I just removed them, but then to save the look of the page I rep&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;laced them with:&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;SPACER&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;TYPE&lt;/span&gt;&lt;span class="kwrd"&gt;="block"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;WIDTH&lt;/span&gt;&lt;span class="kwrd"&gt;="20"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;HEIGHT&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;When the .htm page is XLM ready, it's time to go back to MSBuild! You can use &lt;xmlupdate&gt;task provided by &lt;strong&gt;MSBuild.Community.Tasks&lt;/strong&gt; found at&lt;/xmlupdate&gt;&lt;/span&gt; &lt;/span&gt;&lt;a href="http://msbuildtasks.tigris.org/"&gt;&lt;span style="font-size:85%;"&gt;http://msbuildtasks.tigris.org/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; &lt;span style="color:#000000;"&gt;(the site shows you &lt;/span&gt;&lt;span style="color:#000000;"&gt;how to get started and reference the library).&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#000000;"&gt;Here's the snipet that updates my publish.htm file:&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;Target&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="UpdatePublishPage"&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;XmlUpdate&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;XmlFileName&lt;/span&gt;&lt;span class="kwrd"&gt;="$(YourPath)\Publish.htm"&lt;/span&gt;&lt;br /&gt;        &lt;span class="attr"  style="color:#ff0000;"&gt;XPath&lt;/span&gt;&lt;span class="kwrd"&gt;="HTML/BODY/TABLE/TR/TD/TABLE/TR/TD/TABLE/TR/&lt;span style="color:#993399;"&gt;&lt;strong&gt;APPINFO&lt;/strong&gt;&lt;/span&gt;/TD"&lt;/span&gt;&lt;br /&gt;        &lt;span class="attr"  style="color:#ff0000;"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="$(Major).$(Minor).$(Build).$(Revision)"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;XmlUpdate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;Target&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;color:#000000;"&gt;Note that the &lt;strong&gt;XPath&lt;/strong&gt; has "&lt;span style="color:#6633ff;"&gt;APPINFO&lt;/span&gt;" tag. In &lt;strong&gt;publish.htm&lt;/strong&gt; I found the tags that specify the build version of my application and incapsulated them in "&lt;span style="color:#6633ff;"&gt;APPINFO&lt;/span&gt;". That way my &lt;strong&gt;XPath&lt;/strong&gt; can find and manipulate just that part of html:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;APPINFO&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;TD&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2.0.0.22103&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;TD&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;APPINFO&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;color:#000000;"&gt;Finally, when the &lt;strong&gt;publish.htm&lt;/strong&gt; is updated, use &lt;strong&gt;MSBuild&lt;/strong&gt; &lt;copy&gt;task to copy it to the your publish folder:&lt;/copy&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;Copy&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;SourceFiles&lt;/span&gt;&lt;span class="kwrd"&gt;="$(MyPath)\Publish.htm"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;DestinationFolder&lt;/span&gt;&lt;span class="kwrd"&gt;="$(PublishFolder)"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="font-family:verdana;font-size:85%;color:#000000;"&gt;&lt;strong&gt;That's it!&lt;/strong&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span"  style="color:#333399;"&gt;...to a comment 1: the Target is all there, the only thing that I ommitted was Dependency on another target. I took it out for simplicity sake:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span"  style="color:#333399;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px; white-space: normal; color: rgb(51, 51, 255); "&gt;&amp;lt;&lt;/span&gt;Target Name="UpdateVersionFile" DependsOnTargets="&lt;span class="Apple-style-span"  style="color:#CC0000;"&gt;GetBuildVersion&lt;/span&gt;"&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px; white-space: normal; color: rgb(51, 51, 255); "&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;AssemblyInfo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;CodeLanguage="CS"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt; OutputFile="AssemblyVersion.cs"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt; AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)"  /&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px; white-space: normal; color: rgb(51, 51, 255); "&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px; white-space: normal; color: rgb(51, 51, 255); "&gt;&amp;lt;&lt;/span&gt;/Target&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px; white-space: normal; color: rgb(51, 51, 255); "&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt; &lt;span class="Apple-style-span"  style="color:#333399;"&gt;after you declare a target then you can call it.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span"  style="color:#333399;"&gt;For example, at some point some other target such as "DoMYBuild" maybe will call your UpdateVersionFile:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:Consolas;font-size:100%;color:#333399;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px; white-space: normal; color: rgb(51, 51, 255); "&gt;&amp;lt;&lt;/span&gt;Target Name="DoMYBuild"&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px; white-space: normal; color: rgb(51, 51, 255); "&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;lt;CallTarget Targets="Clean;GetNewFiles;Build;&lt;span class="Apple-style-span"  style="color:#CC0000;"&gt;UpdateVersionFile&lt;/span&gt;"&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px; white-space: normal; color: rgb(51, 51, 255); "&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Consolas;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px; white-space: normal; color: rgb(51, 51, 255); "&gt;&amp;lt;&lt;/span&gt;/Target&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 13px; white-space: normal; color: rgb(51, 51, 255); "&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:verdana;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;b&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-3008515562054658546?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/3008515562054658546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2008/02/clickonce-how-to-update-publishhtm-with.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/3008515562054658546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/3008515562054658546'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2008/02/clickonce-how-to-update-publishhtm-with.html' title='ClickOnce - how to update publish.htm with MSBuild'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-823621828380230581</id><published>2008-01-21T15:29:00.000-08:00</published><updated>2008-01-25T07:38:20.123-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='resizing'/><category scheme='http://www.blogger.com/atom/ns#' term='TranslateTransform'/><category scheme='http://www.blogger.com/atom/ns#' term='runtime'/><category scheme='http://www.blogger.com/atom/ns#' term='Z order'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><category scheme='http://www.blogger.com/atom/ns#' term='TransformDictionary'/><title type='text'>How to change size of WPF controls at runtime</title><content type='html'>&lt;span style="color:#003300;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;This sample code uses mouse events to change the size UI elements on &lt;span style="color:#330000;"&gt;Canvas&lt;/span&gt;. Stretching is only done for usual bottom, right and bottom-right of the control - you can do top and left in a similar fashion.&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;For controls I used 3 rectangles (actually borders containing rectangles). All three controls are identical except for the names. Note, that each has a &lt;strong&gt;&lt;span style="color:#330000;"&gt;TranslateTransform&lt;/span&gt;&lt;/strong&gt; in the &lt;strong&gt;&lt;span style="color:#330000;"&gt;TransformGroup&lt;/span&gt;&lt;/strong&gt;. The C# code uses &lt;strong&gt;&lt;span style="color:#000000;"&gt;LINQ query&lt;/span&gt;&lt;/strong&gt; to get the right transform from the group before applying new coordinates to it for dragging. This sample also includes the changing of the &lt;span style="color:#330000;"&gt;Z Order&lt;/span&gt; to maintain the control that is on top.&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#003300;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;Check out a short video below XAML code. It shows what compiled XAML looks like and demostrates dragging and resizing.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#006600;"&gt;* * * * * * * * * * * * *&lt;br /&gt;* Here's the XAML code: * &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#006600;"&gt;* * * * * * * * * * * * * &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Window&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"&gt;="MoveObjectOnMouseDownUpMove.Window1"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="attr"  style="color:#ff0000;"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"  style="color:#ff0000;"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"  style="color:#ff0000;"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;="Window1"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="300"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="300"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Canvas&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="canvas"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;MouseMove&lt;/span&gt;&lt;span class="kwrd"&gt;="Canvas_MouseMove"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="&lt;span style="color:#000000;"&gt;&lt;strong&gt;border1&lt;/strong&gt;&lt;/span&gt;"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Left&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;="123"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Top&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;="35"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;BorderBrush&lt;/span&gt;&lt;span class="kwrd"&gt;="DarkKhaki"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;BorderThickness&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;  &lt;span class="attr"  style="color:#ff0000;"&gt;CornerRadius&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Padding&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="68"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="68"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;MinHeight&lt;/span&gt;&lt;span class="kwrd"&gt;="10"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;MinWidth&lt;/span&gt;&lt;span class="kwrd"&gt;="10"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;MouseLeftButtonDown&lt;/span&gt;&lt;span class="kwrd"&gt;="border_MouseLeftButtonDown"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;MouseLeave&lt;/span&gt;&lt;span class="kwrd"&gt;="border_MouseLeave"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;MouseEnter&lt;/span&gt;&lt;span class="kwrd"&gt;="border_MouseEnter"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;DropShadowBitmapEffect&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;="DarkGray"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;TransformGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;ScaleTransform&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;TranslateTransform&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;TransformGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Rectangle&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="rect"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Fill&lt;/span&gt;&lt;span class="kwrd"&gt;="DarkKhaki"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;RadiusX&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;RadiusY&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="&lt;span style="color:#000000;"&gt;&lt;strong&gt;border2&lt;/strong&gt;&lt;/span&gt;"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Left&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;="123"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Top&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;="35"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;BorderBrush&lt;/span&gt;&lt;span class="kwrd"&gt;="DarkKhaki"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;BorderThickness&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;  &lt;span class="attr"  style="color:#ff0000;"&gt;CornerRadius&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Padding&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="68"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="68"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;MinHeight&lt;/span&gt;&lt;span class="kwrd"&gt;="10"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;MinWidth&lt;/span&gt;&lt;span class="kwrd"&gt;="10"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;MouseLeftButtonDown&lt;/span&gt;&lt;span class="kwrd"&gt;="border_MouseLeftButtonDown"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;MouseLeave&lt;/span&gt;&lt;span class="kwrd"&gt;="border_MouseLeave"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;MouseEnter&lt;/span&gt;&lt;span class="kwrd"&gt;="border_MouseEnter"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;DropShadowBitmapEffect&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;="DarkGray"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;TransformGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;ScaleTransform&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TranslateTransform&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;TransformGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Rectangle&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="rect"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Fill&lt;/span&gt;&lt;span class="kwrd"&gt;="DarkKhaki"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;RadiusX&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;RadiusY&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="&lt;span style="color:#000000;"&gt;&lt;strong&gt;border3&lt;/strong&gt;&lt;/span&gt;"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Left&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;="123"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Top&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;="35"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;BorderBrush&lt;/span&gt;&lt;span class="kwrd"&gt;="DarkKhaki"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;BorderThickness&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;  &lt;span class="attr"  style="color:#ff0000;"&gt;CornerRadius&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Padding&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="68"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="68"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;MinHeight&lt;/span&gt;&lt;span class="kwrd"&gt;="10"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;MinWidth&lt;/span&gt;&lt;span class="kwrd"&gt;="10"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;MouseLeftButtonDown&lt;/span&gt;&lt;span class="kwrd"&gt;="border_MouseLeftButtonDown"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;MouseLeave&lt;/span&gt;&lt;span class="kwrd"&gt;="border_MouseLeave"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"  style="color:#ff0000;"&gt;MouseEnter&lt;/span&gt;&lt;span class="kwrd"&gt;="border_MouseEnter"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#cc0000;"&gt;DropShadowBitmapEffect&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;="DarkGray"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;TransformGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;ScaleTransform&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;TranslateTransform&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;TransformGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Rectangle&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="rect"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Fill&lt;/span&gt;&lt;span class="kwrd"&gt;="DarkKhaki"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;RadiusX&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;RadiusY&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#990000;"&gt;Border&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Canvas&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000000;"&gt;&lt;strong&gt;When you compile XAML Code, it will look the image below. Before starting to go into C# file to add logic to the events created in XAML, check out the video to see the dragging, resizing and maintaining of the z Order.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-6c3ab2cd8e6c0cc3" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v6.nonxt1.googlevideo.com/videoplayback?id%3D6c3ab2cd8e6c0cc3%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1329917011%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D11A3FC6B02841616DED464CF1702DB1AEB501B0.2E0ADCE93761321403364AE6E68157140BC2787E%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D6c3ab2cd8e6c0cc3%26offsetms%3D5000%26itag%3Dw160%26sigh%3DLjz1EF28Nu4fynGR-gi6rV9wioY&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v6.nonxt1.googlevideo.com/videoplayback?id%3D6c3ab2cd8e6c0cc3%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1329917011%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D11A3FC6B02841616DED464CF1702DB1AEB501B0.2E0ADCE93761321403364AE6E68157140BC2787E%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D6c3ab2cd8e6c0cc3%26offsetms%3D5000%26itag%3Dw160%26sigh%3DLjz1EF28Nu4fynGR-gi6rV9wioY&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#006600;"&gt;* * * * * * * * * * * * * * * * * * * &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#006600;"&gt;Here's the C# code &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:courier new;font-size:85%;color:#006600;"&gt;* * * * * * * * * * * * * * * * * * *&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt; &lt;span style="color:#000000;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#336666;"&gt;Window1&lt;/span&gt; : &lt;span style="color:#336666;"&gt;Window&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"  style="color:#000099;"&gt;private&lt;/span&gt; &lt;span style="color:#336666;"&gt;Element&lt;/span&gt; current = &lt;span class="kwrd"  style="color:#000099;"&gt;new&lt;/span&gt; &lt;span style="color:#336666;"&gt;Element&lt;/span&gt;();&lt;br /&gt;        &lt;span class="kwrd"  style="color:#000099;"&gt;public&lt;/span&gt; Window1()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       &lt;strong&gt; &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/span&gt; OnMouseLeftButtonDown&lt;/strong&gt;(&lt;span style="color:#339999;"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;base&lt;/span&gt;.OnMouseLeftButtonDown(e);&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.X = &lt;span style="color:#339999;"&gt;Mouse&lt;/span&gt;.GetPosition(&lt;span class="kwrd"  style="color:#000099;"&gt;this&lt;/span&gt;.canvas).X;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#000099;"&gt;this&lt;/span&gt;.current.Y = &lt;span style="color:#339999;"&gt;Mouse&lt;/span&gt;.GetPosition(&lt;span class="kwrd"  style="color:#000099;"&gt;this&lt;/span&gt;.canvas).Y;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt;(&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.InputElement != &lt;span class="kwrd"  style="color:#3333ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.InputElement.CaptureMouse();&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.IsStretching)&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.IsDragging = &lt;span class="kwrd"  style="color:#3333ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;strong&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;OnMouseLeftButtonUp&lt;/strong&gt;(&lt;span style="color:#339999;"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;base&lt;/span&gt;.OnMouseLeftButtonUp(e);&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3366ff;"&gt;if&lt;/span&gt; (&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.InputElement != &lt;span class="kwrd"  style="color:#3333ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.InputElement.ReleaseMouseCapture();&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Cursor = &lt;span style="color:#339999;"&gt;Cursors&lt;/span&gt;.Arrow;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:#3333ff;"&gt; &lt;strong&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;Canvas_MouseMove(&lt;span class="kwrd"  style="color:#3333ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#339999;"&gt;MouseEventArgs&lt;/span&gt; e)&lt;/strong&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt; ( e.LeftButton == &lt;span style="color:#339999;"&gt;MouseButtonState&lt;/span&gt;.Pressed &amp;amp;&amp;amp;&lt;br /&gt;                 current.InputElement != &lt;span class="kwrd"  style="color:#3333ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color:#009900;"&gt;&lt;span class="rem"&gt;//increment z-Order and pass it to the current element, &lt;/span&gt;&lt;br /&gt;                &lt;span class="rem"&gt;//so that it stays on top of all other elements&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;                ((&lt;span style="color:#339999;"&gt;Border&lt;/span&gt;)&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.InputElement).SetValue(&lt;span style="color:#339999;"&gt;Canvas&lt;/span&gt;.ZIndexProperty, &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.ZIndex++);&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.IsDragging)&lt;br /&gt;                    Drag(sender);&lt;br /&gt;&lt;br /&gt;               &lt;span style="color:#3333ff;"&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.IsStretching)&lt;br /&gt;                    Stretch(sender);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;strong&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt; border_&lt;span style="color:#000000;"&gt;&lt;strong&gt;MouseLeftButtonDown&lt;/strong&gt;&lt;/span&gt;(&lt;span class="kwrd"  style="color:#3333ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#336666;"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;br /&gt;        {&lt;br /&gt;     &lt;span style="color:#009900;"&gt;       &lt;span class="rem"&gt;//capture the last highest z index before pointing to new current element&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;int&lt;/span&gt; newZIndex = (&lt;span class="kwrd"  style="color:#3333ff;"&gt;int&lt;/span&gt;)((&lt;span style="color:#336666;"&gt;Border&lt;/span&gt;)sender).GetValue(&lt;span style="color:#336666;"&gt;Canvas&lt;/span&gt;.ZIndexProperty);&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.ZIndex = newZIndex &amp;gt; &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.ZIndex ? newZIndex : &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.ZIndex;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#009900;"&gt;//capture the new current element&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.InputElement = (&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender;&lt;br /&gt;        }&lt;br /&gt;      &lt;strong&gt;  &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/span&gt; border_MouseLeave(&lt;span class="kwrd"  style="color:#3333ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#339999;"&gt;MouseEventArgs&lt;/span&gt; e)&lt;/strong&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt; (e.LeftButton == &lt;span style="color:#339999;"&gt;MouseButtonState&lt;/span&gt;.Pressed)&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;return&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#009900;"&gt;// get coordinates&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#339999;"&gt;Border&lt;/span&gt; border = (&lt;span style="color:#339999;"&gt;Border&lt;/span&gt;)sender;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; rightLimit = border.ActualWidth - border.Padding.Right;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; bottomLimit = border.ActualHeight - border.Padding.Bottom;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; x = Mouse.GetPosition((&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender).X;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; y = Mouse.GetPosition((&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender).Y;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"&gt;&lt;span style="color:#009900;"&gt;// figure out stretching directions - only to Right, Bottom&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;bool&lt;/span&gt; stretchRight = (x &amp;gt;= rightLimit &amp;amp;&amp;amp; x &amp;lt; border.ActualWidth) ? &lt;span class="kwrd"  style="color:#3333ff;"&gt;true&lt;/span&gt; : &lt;span class="kwrd"  style="color:#3333ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;bool&lt;/span&gt; stretchBottom = (y &amp;gt;= bottomLimit &amp;amp;&amp;amp; y &amp;lt; border.ActualHeight) ? &lt;span class="kwrd"  style="color:#3333ff;"&gt;true&lt;/span&gt; : &lt;span class="kwrd"  style="color:#3333ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#009900;"&gt;// update current element&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.InputElement = (&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.X = x;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.Y = y;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.IsStretching = &lt;span class="kwrd"  style="color:#3333ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"&gt;&lt;span style="color:#009900;"&gt;//set cursor to show stretch direction&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt; (stretchRight &amp;amp;&amp;amp; stretchBottom)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Cursor = &lt;span style="color:#336666;"&gt;Cursors&lt;/span&gt;.SizeNWSE;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;return&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt;&lt;/span&gt; (stretchRight &amp;amp;&amp;amp; !stretchBottom)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Cursor = &lt;span style="color:#336666;"&gt;Cursors&lt;/span&gt;.SizeWE;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;return&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; &lt;/span&gt;(stretchBottom &amp;amp;&amp;amp; !stretchRight)&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Cursor = &lt;span style="color:#336666;"&gt;Cursors&lt;/span&gt;.SizeNS;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;return&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;else&lt;/span&gt; &lt;span class="rem"  style="color:#009900;"&gt;//no stretch&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Cursor = &lt;span style="color:#339999;"&gt;Cursors&lt;/span&gt;.Arrow;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.current.IsStretching = &lt;span class="kwrd"  style="color:#3333ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/span&gt; border_MouseEnter(&lt;span class="kwrd"  style="color:#3333ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#339999;"&gt;MouseEventArgs&lt;/span&gt; e)&lt;/strong&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#336666;"&gt;Border&lt;/span&gt; border = (&lt;span style="color:#336666;"&gt;Border&lt;/span&gt;)sender;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:#3366ff;"&gt;var&lt;/span&gt; rightLimit = border.ActualWidth - border.Padding.Right;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; bottomLimit = border.ActualHeight - border.Padding.Bottom;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; x = Mouse.GetPosition((&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender).X;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; y = Mouse.GetPosition((&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender).Y;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt; (x &amp;lt; rightLimit &lt;strong&gt;&amp;amp;&amp;amp;&lt;/strong&gt; y &amp;lt; bottomLimit)&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.Cursor = &lt;span style="color:#336666;"&gt;Cursors&lt;/span&gt;.Arrow;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/span&gt; Drag(&lt;span class="kwrd"  style="color:#3333ff;"&gt;object&lt;/span&gt; sender)&lt;/strong&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Cursor = &lt;span style="color:#336666;"&gt;Cursors&lt;/span&gt;.Hand;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#009900;"&gt;// Retrieve the current position of the mouse.&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; newX = Mouse.GetPosition((&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender).X;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; newY = Mouse.GetPosition((&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender).Y;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#009900;"&gt;// Reset the location of the object (add to sender's renderTransform newPosition minus currentElement's position&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; transformGroup = ((&lt;span style="color:#339999;"&gt;UIElement&lt;/span&gt;)&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.InputElement).RenderTransform &lt;span class="kwrd"  style="color:#3333ff;"&gt;as&lt;/span&gt; &lt;span style="color:#339999;"&gt;TransformGroup&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt; (transformGroup == &lt;span class="kwrd"  style="color:#3333ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:#3366ff;"&gt;var&lt;/span&gt; translateTransforms = &lt;span style="color:#3333ff;"&gt;from&lt;/span&gt; transform &lt;span class="kwrd"  style="color:#3333ff;"&gt;in&lt;/span&gt; transformGroup.Children&lt;br /&gt;                                      &lt;span class="kwrd"  style="color:#3333ff;"&gt;where&lt;/span&gt; transform.GetType().Name == &lt;span class="str"  style="color:#990000;"&gt;"TranslateTransform"&lt;/span&gt;&lt;br /&gt;                                      &lt;span style="color:#3333ff;"&gt;select&lt;/span&gt; transform;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#339999;"&gt;TranslateTransform&lt;/span&gt; tt &lt;span class="kwrd"&gt;in&lt;/span&gt; translateTransforms)&lt;br /&gt;            {&lt;br /&gt;                tt.X += newX - current.X;&lt;br /&gt;                tt.Y += newY - current.Y;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#009900;"&gt;// Update the beginning position of the mouse&lt;/span&gt;&lt;br /&gt;            current.X = newX;&lt;br /&gt;            current.Y = newY;&lt;br /&gt;        }&lt;br /&gt;        &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; &lt;span style="color:#000000;"&gt;Stretch(&lt;/span&gt;&lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span style="color:#000000;"&gt;sender)&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:#33cc00;"&gt;&lt;span class="rem"  style="color:#009900;"&gt;// Retrieve the current position of the mouse.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; mousePosX = &lt;span style="color:#339999;"&gt;Mouse&lt;/span&gt;.GetPosition((&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender).X;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; mousePosY = &lt;span style="color:#339999;"&gt;Mouse&lt;/span&gt;.GetPosition((&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender).Y;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#009900;"&gt;//get coordinates&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#339999;"&gt;Border&lt;/span&gt; border = (&lt;span style="color:#339999;"&gt;Border&lt;/span&gt;)&lt;span class="kwrd"&gt;this&lt;/span&gt;.current.InputElement;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; xDiff = mousePosX - &lt;span class="kwrd"&gt;this&lt;/span&gt;.current.X;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; yDiff = mousePosY - &lt;span class="kwrd"&gt;this&lt;/span&gt;.current.Y;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; width = ((&lt;span style="color:#339999;"&gt;Border&lt;/span&gt;)&lt;span class="kwrd"&gt;this&lt;/span&gt;.current.InputElement).Width;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;var&lt;/span&gt; heigth = ((&lt;span style="color:#339999;"&gt;Border&lt;/span&gt;)&lt;span class="kwrd"&gt;this&lt;/span&gt;.current.InputElement).Height;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#009900;"&gt;//make sure not to resize to negative width or heigth&lt;/span&gt;&lt;br /&gt;            xDiff = (border.Width + xDiff) &amp;gt; border.MinWidth &lt;span style="color:#3333ff;"&gt;?&lt;/span&gt; xDiff &lt;span style="color:#3333ff;"&gt;:&lt;/span&gt; border.MinWidth;&lt;br /&gt;            yDiff = (border.Height + yDiff) &amp;gt; border.MinHeight &lt;span style="color:#3333ff;"&gt;?&lt;/span&gt; yDiff &lt;span style="color:#3333ff;"&gt;: &lt;/span&gt;border.MinHeight;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#009900;"&gt;// stretchRight &amp;amp;&amp;amp; stretchBottom ?&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;if&lt;/span&gt; (&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Cursor == Cursors.SizeNWSE)&lt;br /&gt;            {&lt;br /&gt;                ((&lt;span style="color:#339999;"&gt;Border&lt;/span&gt;)&lt;span class="kwrd"&gt;this&lt;/span&gt;.current.InputElement).Width += xDiff;&lt;br /&gt;                ((&lt;span style="color:#339999;"&gt;Border&lt;/span&gt;)&lt;span class="kwrd"&gt;this&lt;/span&gt;.current.InputElement).Height += yDiff;&lt;br /&gt;            }&lt;br /&gt;            &lt;span class="rem"&gt;&lt;span style="color:#009900;"&gt;// stretchRight ?&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Cursor == &lt;span style="color:#339999;"&gt;Cursors&lt;/span&gt;.SizeWE)&lt;br /&gt;                ((&lt;span style="color:#339999;"&gt;Border&lt;/span&gt;)&lt;span class="kwrd"&gt;this&lt;/span&gt;.current.InputElement).Width += xDiff;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"&gt;&lt;span style="color:#009900;"&gt;// stretchBottom&lt;/span&gt; &lt;span style="color:#009900;"&gt;?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Cursor == &lt;span style="color:#339999;"&gt;Cursors&lt;/span&gt;.SizeNS)&lt;br /&gt;                ((&lt;span style="color:#339999;"&gt;Border&lt;/span&gt;)&lt;span class="kwrd"&gt;this&lt;/span&gt;.current.InputElement).Height += yDiff;&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#009900;"&gt;//no stretch&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;else&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.Cursor = &lt;span style="color:#339999;"&gt;Cursors&lt;/span&gt;.Arrow;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.IsStretching = &lt;span class="kwrd"  style="color:#3333ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span class="rem"  style="color:#009900;"&gt;// update current coordinates with the latest postion of the mouse&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.X = mousePosX;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.current.Y = mousePosY;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#339999;"&gt;Element&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;&lt;span style="color:#999999;"&gt;        &lt;span class="preproc"&gt;#region&lt;/span&gt; Fields&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#3333ff;"&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; &lt;span style="color:#000000;"&gt;isDragging =&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; &lt;span style="color:#000000;"&gt;isStretching =&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; &lt;span style="color:#000000;"&gt;stretchLeft =&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; &lt;span style="color:#000000;"&gt;stretchRight =&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt; &lt;span style="color:#000000;"&gt;inputElement =&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt; &lt;span style="color:#000000;"&gt;x, y =&lt;/span&gt; &lt;span style="color:#000000;"&gt;&lt;span style="color:#cc0000;"&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; &lt;span style="color:#000000;"&gt;zIndex &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;= &lt;strong&gt;&lt;span style="color:#cc0000;"&gt;0&lt;/span&gt;&lt;/strong&gt;;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#999999;"&gt; &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;        &lt;span class="preproc"&gt;#region&lt;/span&gt; Constructor&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"  style="color:#3333ff;"&gt;public&lt;/span&gt; Element(){}&lt;br /&gt;        &lt;span class="preproc"  style="color:#999999;"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;        &lt;span class="preproc"&gt;#region&lt;/span&gt; Properties&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"  style="color:#3333ff;"&gt;public&lt;/span&gt; &lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt; InputElement&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.inputElement; }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.inputElement = &lt;span class="kwrd"  style="color:#3333ff;"&gt;value&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.isDragging = &lt;span class="kwrd"  style="color:#3333ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.isStretching = &lt;span class="kwrd"  style="color:#3333ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt;&lt;/span&gt; X&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.x; }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt; { &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.x = &lt;span class="kwrd"  style="color:#3333ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt;&lt;/span&gt; Y&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.y; }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt; { &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.y = &lt;span class="kwrd"  style="color:#3333ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;&lt;/span&gt; ZIndex&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.zIndex; }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt; { &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.zIndex = &lt;span class="kwrd"  style="color:#3333ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt;&lt;/span&gt; IsDragging&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.isDragging; }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.isDragging = &lt;span class="kwrd"  style="color:#3333ff;"&gt;value&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.isStretching = !&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.isDragging;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt;&lt;/span&gt; IsStretching&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.isStretching; }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.isStretching = &lt;span class="kwrd"  style="color:#3333ff;"&gt;value&lt;/span&gt;;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.IsDragging = !&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.isStretching;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt;&lt;/span&gt; StretchLeft&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.stretchLeft; }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt; { &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.stretchLeft = &lt;span class="kwrd"  style="color:#3333ff;"&gt;value&lt;/span&gt;; &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.stretchRight = !&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.stretchLeft; }&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt;&lt;/span&gt; StretchRight&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3333ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.stretchRight; }&lt;br /&gt;            &lt;span style="color:#3333ff;"&gt;set&lt;/span&gt; { &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.stretchRight = &lt;span class="kwrd"  style="color:#3333ff;"&gt;value&lt;/span&gt;; &lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.stretchLeft = !&lt;span class="kwrd"  style="color:#3333ff;"&gt;this&lt;/span&gt;.stretchRight; }&lt;br /&gt;        }&lt;br /&gt;       &lt;span style="color:#999999;"&gt; &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;_________________________________________________________________&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;end of post&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-823621828380230581?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=6c3ab2cd8e6c0cc3&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/823621828380230581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2008/01/how-to-resize-wpf-controls-at-runtime.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/823621828380230581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/823621828380230581'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2008/01/how-to-resize-wpf-controls-at-runtime.html' title='How to change size of WPF controls at runtime'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-1564620252954403134</id><published>2008-01-21T13:46:00.000-08:00</published><updated>2008-01-21T15:18:16.327-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zIndex'/><category scheme='http://www.blogger.com/atom/ns#' term='runtime'/><category scheme='http://www.blogger.com/atom/ns#' term='Z order'/><title type='text'>How to change the Z order of WPF controls at runtime</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#003300;"&gt;It's as simple as this -- keep track of the highest zIndex and before assigning it to the control that needs to have the highest ZIndex - increment it, that way you ensure that the current control has the highest ZIndex and also if there is a set Z order, you are not going to mess it up. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#003300;"&gt;&lt;br /&gt;The code would look something like this:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;//set&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;color:#000000;"&gt;&lt;span style="color:#000099;"&gt;var&lt;/span&gt; zIndex = ((&lt;span style="color:#336666;"&gt;YourCurrentControlType&lt;/span&gt;)sender).GetValue(&lt;span style="color:#336666;"&gt;Parent&lt;/span&gt;.ZIndexProperty);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#006600;"&gt;&lt;span style="font-family:courier new;"&gt;//get&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;strong&gt;someControl&lt;/strong&gt;.&lt;span style="color:#000099;"&gt;SetValue&lt;/span&gt; (&lt;strong&gt;&lt;span style="color:#336666;"&gt;Parent&lt;/span&gt;&lt;/strong&gt;.&lt;span style="color:#000000;"&gt;ZIndexProperty&lt;/span&gt;, zIndex&lt;span style="color:#000000;"&gt;&lt;strong&gt;++&lt;/strong&gt;&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#333300;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#003300;"&gt;In my previous post I wanted to move WPF controls at runtime on canvas by selecting them with the mouse and dragging them to a new location. The problem was that the dragged control, if overlapped the other control, would appear to be behind it, if its Z order was lower. So I needed to change the Z order of the control that is being dragged.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:100%;color:#990000;"&gt;&lt;strong&gt;L O G I C&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;color:#003300;"&gt;Current control should have the highest Z order, so introduce an variable that keeps track of the highest Z order and assigns it to the current control that needs it (incrementing it beforehand, to ensure that it has the highest one).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;color:#003300;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verdana;color:#990000;"&gt;&lt;strong&gt;I M P L E M E N T A T I O N&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;color:#003300;"&gt;I used the code from my previous post on how to move WPF controls and modified a couple of things:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#000000;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1.&lt;/span&gt; &lt;span style="color:#003300;"&gt;Introduce the z Order variable by adding it as the ZIndex property to the&lt;/span&gt; &lt;span style="color:#000099;"&gt;public class&lt;/span&gt; &lt;span style="color:#336666;"&gt;Element&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;color:#000000;"&gt;  &lt;span style="color:#000099;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;&lt;/span&gt; zIndex = 0;&lt;br /&gt;  &lt;span style="color:#000099;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;&lt;/span&gt; ZIndex&lt;br /&gt;  {&lt;br /&gt;     &lt;span style="color:#000099;"&gt; get &lt;span style="color:#000000;"&gt;{&lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.zIndex; }&lt;br /&gt;      &lt;span style="color:#000099;"&gt;set &lt;span style="color:#000000;"&gt;{&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.zIndex = &lt;span class="kwrd"  style="color:#000099;"&gt;value&lt;/span&gt;; }&lt;br /&gt;  }&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#000000;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;2.&lt;/span&gt; &lt;span style="color:#003300;"&gt;add a line of code to function rect1_MouseLeftButtonDown() to capture the current Z order&lt;/span&gt;:&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/span&gt; rect1_MouseLeftButtonDown(&lt;span class="kwrd"  style="color:#000099;"&gt;object&lt;/span&gt; sender,&lt;br /&gt;                                       &lt;span style="color:#336666;"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#006600;"&gt;   &lt;span class="rem"&gt;//capture the last highest z index &lt;/span&gt;&lt;br /&gt;   &lt;span class="rem"&gt;//before pointing to new current element&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"  style="color:#000099;"&gt;int&lt;/span&gt; newZIndex = (&lt;span class="kwrd"  style="color:#000099;"&gt;int&lt;/span&gt;)((&lt;span style="color:#336666;"&gt;Border&lt;/span&gt;)sender).GetValue(&lt;span style="color:#336666;"&gt;Canvas&lt;/span&gt;.ZIndexProperty);&lt;br /&gt;   &lt;span class="kwrd"  style="color:#000099;"&gt;this&lt;/span&gt;.current.ZIndex = newZIndex &amp;gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.current.ZIndex ?&lt;br /&gt;                         newZIndex :&lt;br /&gt;                         &lt;span class="kwrd"  style="color:#000099;"&gt;this&lt;/span&gt;.current.ZIndex;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;   &lt;span class="rem"  style="color:#006600;"&gt;//capture the new current element&lt;/span&gt;&lt;br /&gt;   &lt;span class="kwrd"  style="color:#000099;"&gt;this&lt;/span&gt;.current.InputElement = (&lt;span style="color:#336666;"&gt;IInputElement&lt;/span&gt;)sender;&lt;/span&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="color:#003300;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span style="color:#660000;"&gt;3.&lt;/span&gt;Assign the highest Z order to the current control in Canvas_MouseMove:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#000099;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/span&gt; Canvas_MouseMove(&lt;span class="kwrd"  style="color:#000099;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#336666;"&gt;MouseEventArgs&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"  style="color:#000099;"&gt;if&lt;/span&gt; ( e.LeftButton == &lt;span style="color:#336666;"&gt;MouseButtonState&lt;/span&gt;.Pressed &amp;amp;&amp;amp;&lt;br /&gt;        current.InputElement != &lt;span class="kwrd"  style="color:#000099;"&gt;null&lt;/span&gt;)&lt;br /&gt;   {&lt;br /&gt; &lt;span style="color:#006600;"&gt;     &lt;span class="rem"&gt;//increment z-Order and pass it to the current element, &lt;/span&gt;&lt;br /&gt;      &lt;span class="rem"&gt;//so that it stays on top of all other elements&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;      ((&lt;span style="color:#336666;"&gt;Border&lt;/span&gt;)&lt;span class="kwrd"  style="color:#000099;"&gt;this&lt;/span&gt;.current.InputElement).SetValue(&lt;span style="color:#336666;"&gt;Canvas&lt;/span&gt;.ZIndexProperty,&lt;br /&gt;                                                   &lt;span class="kwrd"  style="color:#000099;"&gt;this&lt;/span&gt;.current.ZIndex++);&lt;br /&gt;&lt;br /&gt;      &lt;span class="kwrd"  style="color:#000099;"&gt;if&lt;/span&gt; (&lt;span class="kwrd"  style="color:#000099;"&gt;this&lt;/span&gt;.current.IsDragging)&lt;br /&gt;         Drag(sender);&lt;span class="rem"&gt;//shortened, see how to drag in previous post&lt;/span&gt;&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;color:#333300;"&gt;&lt;strong&gt;And that's it...pretty simple.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;_____________________________________________&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-1564620252954403134?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/1564620252954403134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2008/01/how-to-change-z-order-of-wpf-controls.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/1564620252954403134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/1564620252954403134'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2008/01/how-to-change-z-order-of-wpf-controls.html' title='How to change the Z order of WPF controls at runtime'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-723611850379109347.post-6223399197252593260</id><published>2008-01-10T13:50:00.001-08:00</published><updated>2008-01-21T15:26:53.663-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TranslateTransform'/><category scheme='http://www.blogger.com/atom/ns#' term='runtime'/><category scheme='http://www.blogger.com/atom/ns#' term='RenderTransform'/><category scheme='http://www.blogger.com/atom/ns#' term='move/drag controls'/><title type='text'>How to move WPF controls with mouse at runtime</title><content type='html'>&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;I wanted to be able to drag or move controls around at runtime (using TranslateTransform) - by clicking the mouse on the desired control and moving it to a new location on the parent screen/control. This code sample uses the simplest WPF Elements - a Canvas and a couple of Rectangles. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;I don't think this needs much explaination. So just copy/paste and run it. You should be able to see two rectangles on canvas and move them around when mouse is down.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#003333;"&gt;L O G I C&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;strong&gt;&lt;span style="font-family:Courier New;font-size:130%;color:#ff6600;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Program maintains a variable "current" that keeps track of which control (or UI element) on canvas is under a possible dragging action.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Each Rectangle declares &lt;strong&gt;RenderTransform's&lt;/strong&gt; &lt;strong&gt;TranslateTransform&lt;/strong&gt; and subscribes to &lt;strong&gt;MouseLeftButtonDown&lt;/strong&gt; events, where it is assigned to the current element.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://bp1.blogger.com/_U9dhgcjAc1A/R4p0rwkSYTI/AAAAAAAAACY/tE73jV3BpvY/s1600-h/Capture.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5155061018599252274" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_U9dhgcjAc1A/R4p0rwkSYTI/AAAAAAAAACY/tE73jV3BpvY/s400/Capture.JPG" border="0" /&gt;&lt;/a&gt; &lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;Canvas subscribes to &lt;strong&gt;MouseDown&lt;/strong&gt;, &lt;strong&gt;MouseUp&lt;/strong&gt; and &lt;strong&gt;MouseMove. In MouseDown &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;canvas gets the coordinates of the current control and captures the mouse on it. In &lt;strong&gt;MouseUp&lt;/strong&gt; it releases the current element and the mouse. The &lt;strong&gt;MouseMove&lt;/strong&gt; resets the location of the current element by adjusting the current element's &lt;strong&gt;RenderTransform&lt;/strong&gt; with the new position.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p align="left"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;strong&gt;&lt;span style="font-family:courier new;color:#000066;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="left"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;span style="font-family:Courier New;color:#003333;"&gt;C O D E&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;/* * * * * * * * * * * * * * * * * * * ** * * * ** * * * * * * * * *&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="left"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;&lt;strong&gt;.&lt;/strong&gt; .xaml file:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;color:#006600;"&gt;* *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Window&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="MoveObjectOnMouseDownUpMove.Window1"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="attr"  style="color:#ff0000;"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="attr"  style="color:#ff0000;"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="attr"  style="color:#ff0000;"&gt;Title&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="Window1"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="300"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span style="color:#000099;"&gt;&lt;span class="kwrd"&gt;="300"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"  style="color:#000099;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Canvas&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="canvas"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="attr"  style="color:#ff0000;"&gt;MouseDown&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#000099;"&gt;&lt;span class="kwrd"&gt;="Canvas_MouseDown"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="attr"  style="color:#ff0000;"&gt;MouseUp&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="Canvas_MouseUp"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="attr"  style="color:#ff0000;"&gt;MouseMove&lt;/span&gt;&lt;span style="color:#000099;"&gt;&lt;span class="kwrd"&gt;="Canvas_MouseMove"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:#000099;"&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Rectangle&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="&lt;span style="color:#000099;"&gt;rect2&lt;/span&gt;"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="50"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="50"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Fill&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="Blue"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                   &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Left&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="50"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;&lt;span class="attr"&gt;Canvas&lt;/span&gt;.&lt;span class="attr"&gt;Top&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;="100"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                   &lt;span class="attr"  style="color:#ff0000;"&gt;MouseLeftButtonDown&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#000099;"&gt;&lt;span class="kwrd"&gt;="rect2_MouseLeftButtonDown"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Rectangle.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;TranslateTransform&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Rectangle.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Rectangle&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Rectangle&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;="&lt;span style="color:#000099;"&gt;rect1&lt;/span&gt;"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="50"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="50"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;Fill&lt;/span&gt;&lt;span class="kwrd"&gt;="Red"&lt;/span&gt; &lt;span class="attr"  style="color:#ff0000;"&gt;MouseLeftButtonDown&lt;/span&gt;&lt;span class="kwrd"&gt;="rect1_MouseLeftButtonDown"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Rectangle.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;TranslateTransform&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Rectangle.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"  style="color:#000099;"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Rectangle&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#000099;"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Canvas&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"  style="color:#660000;"&gt;Window&lt;/span&gt;&lt;span class="kwrd"  style="color:#000099;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-family:courier new;color:#336666;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#006600;"&gt;/* * * * * * * * * * * * * * * * * * * ** * * * ** * * * * * * * * *&lt;/span&gt;&lt;span style="font-size:85%;color:#006600;"&gt;&lt;br /&gt;&lt;br /&gt;.                        xaml.cs file:&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#006600;"&gt;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */&lt;/span&gt; &lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span class="kwrd"  style="color:#3366ff;"&gt;using&lt;/span&gt; System.Windows.Media.Imaging;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"  style="color:#3366ff;"&gt;using&lt;/span&gt; System.Windows.Navigation;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"  style="color:#3366ff;"&gt;using&lt;/span&gt; System.Windows.Shapes;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"  style="color:#3366ff;"&gt;namespace&lt;/span&gt; MoveObjectOnMouseDownUpMove&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#339999;"&gt;Window1&lt;/span&gt; : &lt;span style="color:#339999;"&gt;Window&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    {&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;   &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;//see the Element class declaration at the bottom, using it for readablity&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;        &lt;span class="kwrd"  style="color:#3366ff;"&gt;private&lt;/span&gt; Element current = &lt;span class="kwrd"  style="color:#3366ff;"&gt;new&lt;/span&gt; Element(); &lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;        &lt;span class="kwrd"  style="color:#3366ff;"&gt;public&lt;/span&gt; Window1()&lt;br /&gt;&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            InitializeComponent();&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/span&gt; Canvas_MouseDown(&lt;span class="kwrd"  style="color:#3366ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#339999;"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;br /&gt;&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.current.X = &lt;span style="color:#339999;"&gt;Mouse&lt;/span&gt;.GetPosition((IInputElement)sender).X;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.current.Y = &lt;span style="color:#339999;"&gt;Mouse&lt;/span&gt;.GetPosition((IInputElement)sender).Y;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:#009900;"&gt;&lt;span class="rem"&gt;// Ensure object receives all mouse events.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.current.InputElement.CaptureMouse();&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/span&gt; Canvas_MouseUp(&lt;span class="kwrd"  style="color:#3366ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#339999;"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;br /&gt;&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3366ff;"&gt;if&lt;/span&gt; (&lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.current.InputElement != &lt;span class="kwrd"  style="color:#3366ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;                &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.current.InputElement.ReleaseMouseCapture();&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/span&gt; Canvas_MouseMove(&lt;span class="kwrd"  style="color:#3366ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#339999;"&gt;MouseEventArgs&lt;/span&gt; e)&lt;br /&gt;&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:#009900;"&gt;&lt;span class="rem"&gt;// if mouse is down when its moving, then it's dragging current&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3366ff;"&gt;if&lt;/span&gt; (e.LeftButton == MouseButtonState.Pressed)&lt;br /&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;this&lt;/span&gt;.current.IsDragging = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3366ff;"&gt;if&lt;/span&gt; (&lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.current.IsDragging &lt;span style="color:#000066;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; current.InputElement != &lt;span class="kwrd"  style="color:#3366ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"  style="color:#009900;"&gt;// Retrieve the current position of the mouse.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span style="color:#3366ff;"&gt;var&lt;/span&gt; newX = Mouse.GetPosition((IInputElement)sender).X;&lt;br /&gt;&lt;br /&gt;                &lt;span style="color:#3366ff;"&gt;var&lt;/span&gt; newY = Mouse.GetPosition((IInputElement)sender).Y;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;                &lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;    &lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;&lt;span class="rem"&gt;// Reset the location of the object (add to sender's renderTransform&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"&gt;// newPosition minus currentElement's position&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span style="color:#3366ff;"&gt;var&lt;/span&gt; rt = ((UIElement)&lt;span class="kwrd"&gt;this&lt;/span&gt;.current.InputElement).RenderTransform;&lt;br /&gt;&lt;br /&gt;                &lt;span style="color:#3366ff;"&gt;var&lt;/span&gt; offsetX = rt.Value.OffsetX;&lt;br /&gt;&lt;br /&gt;                &lt;span style="color:#3366ff;"&gt;var&lt;/span&gt; offsetY = rt.Value.OffsetY;&lt;br /&gt;&lt;br /&gt;                rt.SetValue(&lt;span style="color:#000000;"&gt;TranslateTransform&lt;/span&gt;.XProperty, offsetX + newX - current.X);&lt;br /&gt;&lt;br /&gt;                rt.SetValue(&lt;span style="color:#000000;"&gt;TranslateTransform&lt;/span&gt;.YProperty, offsetY + newY - current.Y);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span class="rem"  style="color:#009900;"&gt;// Update position of the mouse&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                current.X = newX;&lt;br /&gt;&lt;br /&gt;                current.Y = newY;&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/span&gt; rect1_MouseLeftButtonDown(&lt;span class="kwrd"  style="color:#3366ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#339999;"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;br /&gt;&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.current.InputElement = (&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/span&gt; rect2_MouseLeftButtonDown(&lt;span class="kwrd"  style="color:#3366ff;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#339999;"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;br /&gt;&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.current.InputElement = (&lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt;)sender;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;&lt;strong&gt;&lt;span class="rem"&gt;/* * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * *&lt;/span&gt;&lt;span class="rem"&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;&lt;span class="rem"&gt;&lt;strong&gt;helper class (don't need it, but makes things easier to read) &lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span style="color:#009900;"&gt;&lt;span class="rem"&gt;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#339999;"&gt;Element&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#c0c0c0;"&gt;&lt;span class="preproc"&gt;#region&lt;/span&gt; Fields&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3366ff;"&gt;bool&lt;/span&gt; isDragging = &lt;span class="kwrd"  style="color:#3366ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt; inputElement = &lt;span class="kwrd"  style="color:#3366ff;"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3366ff;"&gt;double&lt;/span&gt; x, y = &lt;span style="color:#993300;"&gt;0&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;span class="preproc"  style="color:#c0c0c0;"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#c0c0c0;"&gt;&lt;span class="preproc"&gt;#region&lt;/span&gt; Constructor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3366ff;"&gt;public&lt;/span&gt; Element() { }&lt;br /&gt;&lt;br /&gt;    &lt;span class="preproc"  style="color:#c0c0c0;"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#c0c0c0;"&gt;&lt;span class="preproc"&gt;#region&lt;/span&gt; Properties&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"  style="color:#3366ff;"&gt;public&lt;/span&gt; &lt;span style="color:#339999;"&gt;IInputElement&lt;/span&gt; InputElement&lt;br /&gt;&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.inputElement; }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;set&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.inputElement = &lt;span class="kwrd"  style="color:#3366ff;"&gt;value&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:#009900;"&gt;&lt;span class="rem"&gt;/* every time inputElement resets, the draggin stops (you actually don't even need to track it, but it made things easier in the begining, I'll change it next time I get to play with it. */&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;            &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.isDragging = &lt;span class="kwrd"  style="color:#3366ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt;&lt;/span&gt; X&lt;br /&gt;&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.x; }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;set&lt;/span&gt; { &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.x = &lt;span class="kwrd"  style="color:#3366ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt;&lt;/span&gt; Y&lt;br /&gt;&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;&lt;/span&gt;.y; }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;set&lt;/span&gt; { &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.y = &lt;span class="kwrd"  style="color:#3366ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#3366ff;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt;&lt;/span&gt; IsDragging&lt;br /&gt;&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;get&lt;/span&gt; { &lt;span class="kwrd"  style="color:#3366ff;"&gt;return&lt;/span&gt; &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.isDragging; }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#3366ff;"&gt;set&lt;/span&gt; { &lt;span class="kwrd"  style="color:#3366ff;"&gt;this&lt;/span&gt;.isDragging = &lt;span class="kwrd"  style="color:#3366ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="preproc"  style="color:#c0c0c0;"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/723611850379109347-6223399197252593260?l=denismorozov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://denismorozov.blogspot.com/feeds/6223399197252593260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://denismorozov.blogspot.com/2008/01/drag-controls-in-wpf-using.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/6223399197252593260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/723611850379109347/posts/default/6223399197252593260'/><link rel='alternate' type='text/html' href='http://denismorozov.blogspot.com/2008/01/drag-controls-in-wpf-using.html' title='How to move WPF controls with mouse at runtime'/><author><name>D.</name><uri>http://www.blogger.com/profile/01027429188997909936</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_U9dhgcjAc1A/R4bnMAkSYQI/AAAAAAAAABM/AdahAa-220g/S220/Snapshot+of+me+3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_U9dhgcjAc1A/R4p0rwkSYTI/AAAAAAAAACY/tE73jV3BpvY/s72-c/Capture.JPG' height='72' width='72'/><thr:total>4</thr:total></entry></feed>
