<?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-1801684018053244846</id><updated>2011-12-27T16:44:05.677-08:00</updated><category term='Trimmed'/><category term='List(T)'/><category term='xmlns'/><category term='bts'/><category term='ai'/><category term='PlaceHolder'/><category term='avatar'/><category term='C# 3.5'/><category term='Relative Uri'/><category term='Net.Framework 3.5'/><category term='BitmapCash'/><category term='XAML'/><category term='VisualTreeHelper.FindElementsInHostCoordinates()'/><category term='Uri'/><category term='MSDN'/><category term='ControlTemplate'/><category term='ForEach method'/><category term='resource'/><category term='WPF DataGrid'/><category term='performance'/><category term='INotifyPropertyChanged'/><category term='Keyboard.Focus'/><category term='DataTemplateSelector'/><category term='asp.net mvc'/><category term='DataContext'/><category term='LINQ'/><category term='MultiBinding'/><category term='XSLT'/><category term='EnableGPUAcceleration'/><category term='attribute'/><category term='ObjectDataProvider'/><category term='IEnumerable'/><category term='Prototype Pattern'/><category term='Inherit'/><category term='ToggleButton'/><category term='GroupName'/><category term='directive'/><category term='VS2008'/><category term='deployment SVN'/><category term='ItemControl'/><category term='code snippet'/><category term='RegisterAttached'/><category term='session'/><category term='ObservableCollection'/><category term='MaxFrameRate'/><category term='asp.net'/><category term='fun'/><category term='Custom Style'/><category term='WPFToolKit'/><category term='FocusManager'/><category term='Vista'/><category term='LINQPad'/><category term='Template'/><category term='Team Foundation Server'/><category term='Binding'/><category term='TrimmedTextBlock'/><category term='anonymous method'/><category term='iframe'/><category term='unit tests'/><category term='DataGrid'/><category term='Bind to a Method'/><category term='AnonymousType'/><category term='FlowDocumentPageViewer'/><category term='gadget'/><category term='command'/><category term='sidebar'/><category term='Snoop'/><category term='ItemsSource'/><category term='Singlton Pattern'/><category term='Artificial Intelligence'/><category term='Zoom'/><category term='for'/><category term='Nested Types'/><category term='RenderAtScale'/><category term='multiUI'/><category term='Net.Framework 2.0'/><category term='CompositionTarget.Rendering'/><category term='TextBox'/><category term='Custom Brush'/><category term='Style'/><category term='tool'/><category term='TFS'/><category term='MultiDataTrigger'/><category term='WP7'/><category term='focus scope'/><category term='Team System Web Access'/><category term='x:Shared'/><category term='C#'/><category term='var'/><category term='visual debugging'/><category term='ReSharper'/><category term='OnTime'/><category term='line break'/><category term='Window'/><category term='SVN'/><category term='WPF'/><category term='Silverlight'/><title type='text'>ferocia animi</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>48</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-4251137408815293047</id><published>2011-12-27T16:38:00.000-08:00</published><updated>2011-12-27T16:44:05.683-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='Artificial Intelligence'/><title type='text'>Introduction to Artificial Intelligence</title><content type='html'>&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-olmYVfNx4zA/Tvpf8N4fJXI/AAAAAAAAGYQ/zi9sE8n2L1w/s1600/head.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-olmYVfNx4zA/Tvpf8N4fJXI/AAAAAAAAGYQ/zi9sE8n2L1w/s1600/head.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Introduction to AI&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;Some time ago I have joined to &lt;a href="http://www.ai-class.com/" target="_blank"&gt;Introduction to Artificial Intelligence&lt;/a&gt;&amp;nbsp; it is online course that is based on Stanford CS221, Introduction to Artificial Intelligence.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This class introduced students to the basics of Artificial Intelligence, which included machine learning, probabilistic reasoning, robotics, and natural language processing.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;My reason to join this class was simple I wanted to know more. I took 82% it isn't so bad&amp;nbsp;for not native speaker.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-m8OKeSp9TwE/TvpkLd_B0SI/AAAAAAAAGYw/t8SJvsUH8gY/s640/ai.png" target="_blank"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-M3Me-DGhI4E/Tvpjc6Bv94I/AAAAAAAAGYo/q60USm39P1Q/s200/ai.png" width="183" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you want to get more &lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: EN-US;"&gt;&lt;/span&gt; you can join a lot of next online &lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-language: EN-US;"&gt;courses&lt;/span&gt;- &lt;a href="http://www.class-central.com/"&gt;http://www.class-central.com/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-4251137408815293047?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/4251137408815293047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=4251137408815293047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4251137408815293047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4251137408815293047'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2011/12/introduction-to-artificial-intelligence.html' title='Introduction to Artificial Intelligence'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-olmYVfNx4zA/Tvpf8N4fJXI/AAAAAAAAGYQ/zi9sE8n2L1w/s72-c/head.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-3856265939780068020</id><published>2011-08-16T06:49:00.000-07:00</published><updated>2011-08-16T14:24:47.555-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='resource'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>Trouble with resources in WP7</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-oYyGTQGOrfw/TkaBkb3cn9I/AAAAAAAAGO8/Zai6OATo4vM/s1600/The_world_flag_2006.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 125px;" src="http://2.bp.blogspot.com/-oYyGTQGOrfw/TkaBkb3cn9I/AAAAAAAAGO8/Zai6OATo4vM/s200/The_world_flag_2006.png" alt="" id="BLOGGER_PHOTO_ID_5640338046283718610" border="0" /&gt;&lt;/a&gt;I started a few projects on WP7. It was done just for fun and for improving my skills (Fun was profitable - &lt;a href="http://ghostsofideas.blogspot.com/2011/07/wp7-kinect.html"&gt;I won in Ukrainian WP7 competition&lt;/a&gt;). So I had completed my projects and tried to localize it.&lt;br /&gt;&lt;/div&gt;I met some issues:&lt;br /&gt;&lt;ol&gt;&lt;li style="text-align: justify;"&gt;If you have experience in developing for web silverlight - first isn't new for you. When I edit/add/remove a item in resources's file I need to open resources designer's file and change &lt;span class="st"&gt;access modifiers of parameterless &lt;/span&gt;constructor from "internal" to "public".&lt;br /&gt;It is know issue and know fix - &lt;a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=643"&gt;proof&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Second was new for me. It is strange issue because it appeared only in one of my projects. I created resources file and added key in Resources section of app.xaml (for binding to resources in my xaml files). My project started to crash after this.&lt;br /&gt;I had spent some time and found source of the issue. I noticed that Resource class (auto generated) is internal. I checked &lt;span&gt;"Custom tool" field in properties of resource file. It was filled "ResXFileCodeGenerator" value. In my other projects this field contained "&lt;/span&gt;PublicResXFileCodeGenerator&lt;span&gt;" value. I didn't found detailed description of "ResXFileCodeGenerator" but looks like that it is obsolete tool. I no idea how to it was set in my project.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;One more note: it is for WP7 without "Mango" update. I hope I will not meet such issues after this update.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-3856265939780068020?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/3856265939780068020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=3856265939780068020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3856265939780068020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3856265939780068020'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2011/08/trouble-with-resources-in-wp7.html' title='Trouble with resources in WP7'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-oYyGTQGOrfw/TkaBkb3cn9I/AAAAAAAAGO8/Zai6OATo4vM/s72-c/The_world_flag_2006.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-2228216493678542051</id><published>2011-02-07T06:05:00.000-08:00</published><updated>2011-02-07T09:07:11.901-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TrimmedTextBlock'/><category scheme='http://www.blogger.com/atom/ns#' term='Trimmed'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>Trimmed TextBlock for Windows Phone 7.</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://steliq.com/c/lm/0/01/12356266_windows-phone-7-wp7-review.jpg"&gt;&lt;img style="float: right; margin: 10pt 0pt 10px 10px; cursor: pointer; width: 135px; height: 110px;" src="http://steliq.com/c/lm/0/01/12356266_windows-phone-7-wp7-review.jpg" alt="" border="0" /&gt;&lt;/a&gt;Unfortunately WP7 is based on Silverlight 3. So we can't use some nice features of Silverlight 4 i.e. &lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;dynamic&lt;/span&gt; key word or TextBlock's trimming. But I've solved issue with trimming for Silverlight 3. Solution is &lt;a href="http://rredcat.blogspot.com/2010/03/trimmed-textblock-for-silverlight.html"&gt;here&lt;/a&gt;. Let me explain which code I use in WP7 project:&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Generic.xaml&lt;/span&gt;: File contains style and template for custom control. This file is located in Themes folder. WP7 tools doesn't contains Resources.xaml file template. So I created xml file and name it as "Generic.xaml".&lt;br /&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;TrimmedTextBlock.cs&lt;/span&gt;: It is implementation of custom control. I just copied this file. One more note: I decrement c_POINTS_COUNT to "1" because screen resolution of desktop and mobile versions are different.&lt;/li&gt;&lt;/ul&gt;Easy coding.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-2228216493678542051?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/2228216493678542051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=2228216493678542051' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2228216493678542051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2228216493678542051'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2011/02/trimmed-textblock-for-windows-phone-7.html' title='Trimmed TextBlock for Windows Phone 7.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-1461332204113468921</id><published>2010-12-15T11:29:00.000-08:00</published><updated>2011-09-30T07:39:14.341-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='directive'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><title type='text'>"using" directive in aspx's pages.</title><content type='html'>&lt;div style="text-align: justify;"&gt;It is funny but I don't know about this. I used full name of type (namespace+type name) in aspx pages. It is unnecessary. ASP.NET has directive for this.&lt;br /&gt;&amp;lt;%@ Import namespace="value" %&amp;gt;&lt;br /&gt;Sometime we omit in haste important things.&lt;br /&gt;&lt;br /&gt;UPD: And more easy for Razor view engine:&lt;br /&gt;@using MyNamespace&lt;code&gt;&lt;span class="typ"&gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-1461332204113468921?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/1461332204113468921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=1461332204113468921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/1461332204113468921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/1461332204113468921'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2010/12/using-directive-in-aspxs-pages.html' title='&quot;using&quot; directive in aspx&apos;s pages.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-9202337224712226749</id><published>2010-11-15T13:48:00.000-08:00</published><updated>2010-11-15T14:04:29.949-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='session'/><category scheme='http://www.blogger.com/atom/ns#' term='iframe'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net mvc'/><title type='text'>ASP.NET MVC aplication inside in an iframe (fix issue with empty session).</title><content type='html'>&lt;div style="text-align: justify;"&gt;I developed application using ASP.NET MVC framework. It worked well but when I put my app inside of iframe I founded that in some case in Internet Explorer application missed session.&lt;br /&gt;I started to investigate for the source of the issue.&lt;br /&gt;I founded that application worked well if I decrease security level in the IE. But this fix weren’t suitable for me (I can`t request something in the customers). So I carried on with investigation.&lt;br /&gt;Well description what happen I founded on the follow &lt;a href="http://support.microsoft.com/kb/323752/ja"&gt;page&lt;/a&gt; (unfortunately, I didn’t found English version of this page, so I used google translate for figure out this article).&lt;br /&gt;So for fix this I should add “PSP” header to response. How can I do it for the ASP.NET MVC application? In classic ASP.NET it is easy to do in code behind or in aspx file. I overrode ExecuteResult method in all classes inherited from ActionResult that used in my application. ViewResult  for example:&lt;br /&gt;&lt;/div&gt;&lt;code&gt;public class CustomViewResult : ViewResult&lt;br /&gt; {&lt;br /&gt;     public override void ExecuteResult(ControllerContext context)&lt;br /&gt;     {&lt;br /&gt;         context.HttpContext.Response.AddHeader("P3P", "CP=\"CAO PSA OUR\"");&lt;br /&gt;         base.ExecuteResult(context);&lt;br /&gt;     }&lt;br /&gt; }&lt;/code&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;After it I used my customized classes in base controller of all controllers in application (It was very nice idea to implement one base controller for all other controllers, wasn't it?). For example:&lt;br /&gt;&lt;/div&gt;&lt;code&gt;public class BaseController : Controller&lt;br /&gt; {&lt;br /&gt;     protected override ViewResult View(string viewName, string masterName, object model)&lt;br /&gt;     {&lt;br /&gt;         if (model != null)&lt;br /&gt;         {&lt;br /&gt;             base.ViewData.Model = model;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;         return new CustomViewResult&lt;br /&gt;         {&lt;br /&gt;             ViewName = viewName,&lt;br /&gt;             MasterName = masterName,&lt;br /&gt;             ViewData = base.ViewData,&lt;br /&gt;             TempData = base.TempData&lt;br /&gt;         };&lt;br /&gt;     }&lt;br /&gt; }&lt;/code&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;For figure out which methods I need to override I used cool tools - &lt;a href="http://www.red-gate.com/products/reflector/"&gt;.NET Reflector.&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-9202337224712226749?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/9202337224712226749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=9202337224712226749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/9202337224712226749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/9202337224712226749'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2010/11/aspnet-mvc-aplication-inside-in-iframe.html' title='ASP.NET MVC aplication inside in an iframe (fix issue with empty session).'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-4695888387553451544</id><published>2010-09-16T12:19:00.000-07:00</published><updated>2010-09-16T14:17:40.715-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unit tests'/><category scheme='http://www.blogger.com/atom/ns#' term='resource'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net mvc'/><title type='text'>Unit Tests for ASP.NET MVC application that uses resources in code behind.</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vmZ6fpkhezg/TJJwCB3_ckI/AAAAAAAAEuY/rC6TLDR994g/s1600/test.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 200px; height: 200px;" src="http://4.bp.blogspot.com/_vmZ6fpkhezg/TJJwCB3_ckI/AAAAAAAAEuY/rC6TLDR994g/s200/test.jpg" alt="" id="BLOGGER_PHOTO_ID_5517595673647608386" border="0" /&gt;&lt;/a&gt;Download source files - &lt;a href="http://code.google.com/p/snoopmyversion/downloads/detail?name=ResourcesUnitTests.zip&amp;amp;can=2&amp;amp;q="&gt;&lt;span style="font-style: italic;"&gt;here&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Some time ago I start to play with ASP.NET MVC. It is very well pattern and Microsoft made nice choose that implemented it for ASP.NET in my opinion.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I started a project that uses ASP.NET MVC. This project requests multilingual support. I use resources for this. It works well when I use resource's properties in the View's layer but when I call resource's properties from code behind. It's something likes to next:&lt;br /&gt;&lt;/div&gt;&lt;pre name="code" class="csharp"&gt;public ActionResult Index()&lt;br /&gt;{&lt;br /&gt;ViewData["Message"] = CommonResource.WELCOME;&lt;br /&gt;return View();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;It works but I pay attention that this code breaks my Unit Tests. My Unit Tests looks like:&lt;br /&gt;&lt;/div&gt;&lt;pre name="code" class="csharp"&gt;[TestMethod]&lt;br /&gt;public void Index_Test()&lt;br /&gt;{&lt;br /&gt;//// Arrange&lt;br /&gt;var controller = new HomeController();&lt;br /&gt;&lt;br /&gt;// Act&lt;br /&gt;var result = controller.Index();&lt;br /&gt;&lt;br /&gt;// Assert&lt;br /&gt;Assert.IsInstanceOfType(result, typeof(ViewResult));&lt;br /&gt;}&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;It happens because I run my code in other project and my ResourceManager is not filled (it equals to null). How can I fix it? A first idea that came to mind is "extract interface".. but it is very annoying because resource's class is auto-generate and I should update this code after each updating of resources.. I made some research and found additional way for extracting resources - HttpContext contains &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.httpcontext.getglobalresourceobject.aspx"&gt;GetGlobalResourceObject&lt;/a&gt; method! It is well way because I can set mock for HttpContext and for any its methods or properties.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-style: italic;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt; &lt;/span&gt;GetGlobalResourceObject returns object but I use only strings for localization. So I create linq method for HttpContext that returns string if it presents:&lt;br /&gt;&lt;/div&gt;&lt;pre style="font-style: italic;" name="code" class="csharp"&gt;public static string GetGlobalResource(&lt;br /&gt;   this HttpContextBase httpContext&lt;br /&gt;  , string classKey, string resourceKey)&lt;br /&gt;{&lt;br /&gt;var result = httpContext.GetGlobalResourceObject&lt;br /&gt;                    (classKey, resourceKey);&lt;br /&gt;return null != result&lt;br /&gt;  ? result.ToString() : string.Empty;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-style: italic;"&gt;Pay attention, MissingManifestResourceException is possible in this code if you pass incorrect key/keys! &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So I change pieces of code in Controller's classes in the next manner:&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;public ActionResult Index()&lt;br /&gt;{&lt;br /&gt;ViewData[CommonStrings.MESSAGE] = HttpContext&lt;br /&gt;        .GetGlobalResource(CommonStrings&lt;br /&gt;            .COMMON_RESOURCE, CommonStrings.WELCOME);&lt;br /&gt;return View();&lt;br /&gt;}&lt;/pre&gt;After it I should change my Unit Test's methods in next manner:&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;[TestMethod]&lt;br /&gt;public void Index_Test()&lt;br /&gt;{&lt;br /&gt;//// Arrange&lt;br /&gt;var httpContextMock = MockRepository&lt;br /&gt;              .GenerateMock&amp;lt;HttpContextBase&amp;gt;();&lt;br /&gt;httpContextMock.Stub&lt;br /&gt;   (x =&gt; x.GetGlobalResource(&lt;br /&gt;      CommonStrings.COMMON_RESOURCE, CommonStrings.WELCOME))&lt;br /&gt;   .Return(CommonStrings.WELCOME);&lt;br /&gt;&lt;br /&gt;var controller = new HomeController();&lt;br /&gt;var context = new ControllerContext&lt;br /&gt;  (httpContextMock, new RouteData(), controller);&lt;br /&gt;controller.ControllerContext = context;&lt;br /&gt;&lt;br /&gt;// Act&lt;br /&gt;var result = controller.Index();&lt;br /&gt;&lt;br /&gt;// Assert&lt;br /&gt;Assert.IsInstanceOfType(result, typeof(ViewResult));&lt;br /&gt;ViewDataDictionary viewData = ((ViewResult)result).ViewData;&lt;br /&gt;Assert.AreEqual(CommonStrings.WELCOME&lt;br /&gt;        , viewData[CommonStrings.MESSAGE]);&lt;br /&gt;}&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Moreover, you can see that I added additional checking related to localization.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-4695888387553451544?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/4695888387553451544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=4695888387553451544' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4695888387553451544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4695888387553451544'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2010/09/unit-tests-for-aspnet-mvc-application.html' title='Unit Tests for ASP.NET MVC application that uses resources in code behind.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vmZ6fpkhezg/TJJwCB3_ckI/AAAAAAAAEuY/rC6TLDR994g/s72-c/test.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-6132730765432612581</id><published>2010-03-24T08:01:00.001-07:00</published><updated>2010-05-04T00:05:07.770-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TrimmedTextBlock'/><category scheme='http://www.blogger.com/atom/ns#' term='Trimmed'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Trimmed TextBlock for Silverlight.</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vmZ6fpkhezg/S6pvFk6gYAI/AAAAAAAAD78/5u-1n8VdWt4/s1600/Untitled.png"&gt;&lt;img style="margin: 10pt 0pt 10px 10px; float: right; cursor: pointer; width: 278px; height: 102px;" src="http://3.bp.blogspot.com/_vmZ6fpkhezg/S6pvFk6gYAI/AAAAAAAAD78/5u-1n8VdWt4/s320/Untitled.png" alt="" id="BLOGGER_PHOTO_ID_5452292440484503554" border="0" /&gt;&lt;/a&gt;Download source files - &lt;a href="http://snoopmyversion.googlecode.com/files/TrimmingTextAplication_new.zip"&gt;&lt;span style="font-style: italic;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Not always Silverlight TextBlock that contains long text has enough space for shows all this text. TextBlock  clips text in this case - this behaviour isn't best way for this. Because I wait that TextBlock not only trims but also adds "..." to clipped text.  WPF has brilliant property that helps to resolve this trouble - TextTrimming. I implemented this possibility for Silverlight and now want to present it for you. Furthermore I implemented ToolTip that shows trimmed text (only if text is trimmed!)&lt;br /&gt;&lt;/div&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;UPD: I have just updated performance and behaviour when width defined zero.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-6132730765432612581?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/6132730765432612581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=6132730765432612581' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/6132730765432612581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/6132730765432612581'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2010/03/trimmed-textblock-for-silverlight.html' title='Trimmed TextBlock for Silverlight.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vmZ6fpkhezg/S6pvFk6gYAI/AAAAAAAAD78/5u-1n8VdWt4/s72-c/Untitled.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-4371051005785073015</id><published>2010-02-24T03:07:00.000-08:00</published><updated>2010-03-03T01:19:25.561-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='ReSharper'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Trips&amp;Ticks: Easy way to navigate from XAML to class's definition.</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vmZ6fpkhezg/S42T0ewdj3I/AAAAAAAADzc/eXycVjT_qEo/s1600-h/xamllogo.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 97px; height: 121px;" src="http://2.bp.blogspot.com/_vmZ6fpkhezg/S42T0ewdj3I/AAAAAAAADzc/eXycVjT_qEo/s320/xamllogo.jpg" alt="" id="BLOGGER_PHOTO_ID_5444170054379605874" border="0" /&gt;&lt;/a&gt;Working with XAML code in VS2008 I have just found that I can easy jump to class's or property definition. If I press CTRL and click left mouse button on certain class or property in XAML I will be immediately switched to Object Browser (if it is class or property of .NET or external dll)  or to class's or property definition in my code (if it is class or property from my sources).&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://realnero.blogspot.com/"&gt;Eugene Dolinskyy&lt;/a&gt; just pay my attention that "clear" VS2008 doesn't have this possibility. This feature is presented by &lt;a href="http://www.jetbrains.com/resharper/"&gt;ReSharper&lt;/a&gt;.&lt;br /&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/1801684018053244846-4371051005785073015?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/4371051005785073015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=4371051005785073015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4371051005785073015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4371051005785073015'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2010/02/trips-easy-way-to-navigate-from-xaml-to.html' title='Trips&amp;Ticks: Easy way to navigate from XAML to class&apos;s definition.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vmZ6fpkhezg/S42T0ewdj3I/AAAAAAAADzc/eXycVjT_qEo/s72-c/xamllogo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-6942937290255802444</id><published>2010-01-25T13:33:00.000-08:00</published><updated>2010-01-25T23:47:50.891-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Zoom'/><category scheme='http://www.blogger.com/atom/ns#' term='FlowDocumentPageViewer'/><title type='text'>Zoom event for FlowDocumentPageViewer (corrected)</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vmZ6fpkhezg/SwXVXwtl5ZI/AAAAAAAADDk/pZvfmXhaNy4/s1600/help_key.jpg"&gt;&lt;img style="margin: 10pt 0pt 10px 10px; float: right; cursor: pointer; width: 165px; height: 137px;" src="http://4.bp.blogspot.com/_vmZ6fpkhezg/SwXVXwtl5ZI/AAAAAAAADDk/pZvfmXhaNy4/s320/help_key.jpg" alt="" id="BLOGGER_PHOTO_ID_5405961531917985170" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Download source files - &lt;a href="http://snoopmyversion.googlecode.com/files/SearchVisualTree_new.zip"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;When I wrote my article &lt;span style="font-style: italic;"&gt;&lt;a href="http://rredcat.blogspot.com/2009/11/zoom-and-page-chahged-events-for.html"&gt;Zoom and page chaged events for FlowDocumentPageViewer&lt;/a&gt;&lt;/span&gt; I make mistake, you can read about it - &lt;a href="http://wittersworld.com/post/2010/01/13/Zoom-and-PageChanged-Events-for-FlowDocumentPageViewer.aspx"&gt;there&lt;/a&gt;. However Martin offer solution for this problem. But I don't like this solution, overriding of &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.dependencyobject.onpropertychanged.aspx"&gt;OnPropertyChanged&lt;/a&gt; isn't best solution because this method is risen in many cases so any logic there is serious performance issue.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So how can we fix it in other way? We can find object of &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.slider.aspx"&gt;Slider&lt;/a&gt; in Visual Tree of &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.flowdocumentpageviewer.aspx"&gt;FlowDocumentPageViewer&lt;/a&gt; and subscribe to &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.rangebase.valuechanged.aspx"&gt;ValueChanged&lt;/a&gt; event and call OnZoomChanged(); there.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Bingo! It fixes my trouble.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-6942937290255802444?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/6942937290255802444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=6942937290255802444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/6942937290255802444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/6942937290255802444'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2010/01/zoom-event-for-flowdocumentpageviewer.html' title='Zoom event for FlowDocumentPageViewer (corrected)'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vmZ6fpkhezg/SwXVXwtl5ZI/AAAAAAAADDk/pZvfmXhaNy4/s72-c/help_key.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-2810595228551612321</id><published>2010-01-24T00:46:00.001-08:00</published><updated>2010-01-24T01:02:56.816-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='DataGrid'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF DataGrid'/><category scheme='http://www.blogger.com/atom/ns#' term='WPFToolKit'/><title type='text'>Trips&amp;Ticks: How to implement GroupName for RadioButton in WPF DataGrid's column?</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vmZ6fpkhezg/S1wMVnbrDMI/AAAAAAAADes/iJpuPQEMKp0/s1600-h/column2.jpg"&gt;&lt;img style="margin: 10pt 0pt 10px 10px; float: right; cursor: pointer; width: 181px; height: 254px;" src="http://4.bp.blogspot.com/_vmZ6fpkhezg/S1wMVnbrDMI/AAAAAAAADes/iJpuPQEMKp0/s320/column2.jpg" alt="" id="BLOGGER_PHOTO_ID_5430228816203812034" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Download source files - &lt;a href="http://snoopmyversion.googlecode.com/files/DataGridIntro.zip"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;It is very easy. We should use DataGridTemplateColumn for this. My acquaintance requested to me show it. I added source code where implemented this.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;Some notes:&lt;/span&gt;&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;You should turn off AutoGenerateColumns feature. In other case  control will have duplicate values. &lt;/li&gt;&lt;li&gt;I recommend to turn off CanUserAddRows. In other case user can pick undefined row. &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Enjoy Yulian ;).&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-2810595228551612321?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/2810595228551612321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=2810595228551612321' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2810595228551612321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2810595228551612321'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2010/01/trips-how-to-implement-groupname-for.html' title='Trips&amp;Ticks: How to implement GroupName for RadioButton in WPF DataGrid&apos;s column?'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vmZ6fpkhezg/S1wMVnbrDMI/AAAAAAAADes/iJpuPQEMKp0/s72-c/column2.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-4216660325952906198</id><published>2010-01-15T01:11:00.000-08:00</published><updated>2010-01-21T07:52:05.669-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Foundation Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Team System Web Access'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Web access to Team Foundation Server.</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vmZ6fpkhezg/S1hvHKh-4eI/AAAAAAAADek/8FrOSNtB6tA/s1600-h/TeamPlain.png"&gt;&lt;img style="margin: 10pt 0pt 10px 10px; float: right; cursor: pointer; width: 225px; height: 53px;" src="http://1.bp.blogspot.com/_vmZ6fpkhezg/S1hvHKh-4eI/AAAAAAAADek/8FrOSNtB6tA/s320/TeamPlain.png" alt="" id="BLOGGER_PHOTO_ID_5429211519671788002" border="0" /&gt;&lt;/a&gt;I have been starting to work with Team Foundation Server as source control and bag tracking system for 2 month. In this time we migrated from one TFS to another. So sometime we needed access to both these servers (one as bug track, another as source control). I said to my manager about  web access tool for TFS he heard it already that this tool is very cool but expensive.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It isn't truth. This tool is useful but full freeware! Because &lt;a href="http://blogs.msdn.com/bharry/archive/2007/03/26/microsoft-acquires-teamplain.aspx"&gt;Microsoft Acquired TeamPlain&lt;/a&gt; 3 year ago :). When I tried to find it - I was a bit disappointed I couldn't found this tool - all links were broken. Little find out shows that TeamPlain is renamed to Team System Web Access. I founded article that describes &lt;a href="http://msdn.microsoft.com/en-us/library/bb822178.aspx"&gt;How to: Install Team System Web Access&lt;/a&gt; (this page also contains broken link to installation of Team System Web Access :) ) and after all I found &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=3ECD00BA-972B-4120-A8D5-3D38311893DE&amp;amp;displaylang=en"&gt;download page&lt;/a&gt;.&lt;br /&gt;That isn't fresh news, but it is very upset that this useful tool is so hard for found.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-4216660325952906198?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/4216660325952906198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=4216660325952906198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4216660325952906198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4216660325952906198'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2010/01/web-access-to-team-foundation-server.html' title='Web access to Team Foundation Server.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vmZ6fpkhezg/S1hvHKh-4eI/AAAAAAAADek/8FrOSNtB6tA/s72-c/TeamPlain.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-5181092520554832452</id><published>2009-11-24T06:51:00.000-08:00</published><updated>2009-11-24T11:05:39.644-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='code snippet'/><title type='text'>Useful code snippets for WPF developer.</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;Download snippets &lt;/span&gt;&lt;span style="font-style: italic;"&gt;- &lt;a href="http://snoopmyversion.googlecode.com/files/NetFX30.zip"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vmZ6fpkhezg/Swv32UnwB6I/AAAAAAAADDs/u_vQ-TnJ1Vc/s1600/Untitled.png"&gt;&lt;img style="margin: 10pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 192px;" src="http://3.bp.blogspot.com/_vmZ6fpkhezg/Swv32UnwB6I/AAAAAAAADDs/u_vQ-TnJ1Vc/s320/Untitled.png" alt="" id="BLOGGER_PHOTO_ID_5407688290208843682" border="0" /&gt;&lt;/a&gt;I want to share very useful in my opinion code snippets for WPF developers. Most of they were created my friend  - &lt;a href="http://immortalratblog.blogspot.com/"&gt;Dmitrij Zakharov.&lt;/a&gt; Moreover I want to add a short description to each snippets.&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 0, 0); font-weight: bold;"&gt;&lt;br /&gt;Note:&lt;/span&gt;&lt;span style="font-style: italic;"&gt; The Code Snippet Inserter inserts a code snippet at the cursor location, or inserts a surround-with code snippet around the currently selected code.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Don't you know how to use code snippets? You should read next article - &lt;a href="http://msdn.microsoft.com/en-us/library/z4c5cc9b.aspx"&gt;How to: Use Code Snippets (C#)&lt;/a&gt;. You should copy the code snippets files to &lt;span style="font-style: italic;" class="parameter"&gt;Installation directory&lt;/span&gt;\Microsoft Visual Studio 9.0\VC#\Snippets\1033\NetFX30 in your PC for start to use.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Let me start:&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;addowner&lt;/span&gt; - Adds owner to the dependency property that already exists.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;defstyle&lt;/span&gt; - Code snippet for overriding DefaultStyleKey.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;propa&lt;/span&gt; - Code snippet for an attached property using DependencyProperty as the backing store. It is the common code snippet that is delivered with installation of VS2008 &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;propdp&lt;/span&gt; - Code snippet for a property using DependencyProperty as the backing store. It is the common code snippet that is delivered with installation of VS2008&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;propdpec&lt;/span&gt; - Code snippet for a property with value caching and events support using DependencyProperty as the backing store.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;propdpr&lt;/span&gt; - Code snippet for a property using DependencyPropertyKey as the backing store.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;routedcmd&lt;/span&gt; - Implements routed command executor.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;routedevent&lt;/span&gt; - Declares and implements routed event.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;PS: &lt;/span&gt;Do you want to know more? - read about &lt;a href="http://msdn.microsoft.com/en-us/library/z41h7fat.aspx"&gt;Default Code Snippets&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-5181092520554832452?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/5181092520554832452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=5181092520554832452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5181092520554832452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5181092520554832452'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/11/useful-code-snippets-for-wpf-developer.html' title='Useful code snippets for WPF developer.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vmZ6fpkhezg/Swv32UnwB6I/AAAAAAAADDs/u_vQ-TnJ1Vc/s72-c/Untitled.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-3751944760219737719</id><published>2009-11-19T15:17:00.000-08:00</published><updated>2010-01-25T14:10:01.776-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='command'/><category scheme='http://www.blogger.com/atom/ns#' term='FlowDocumentPageViewer'/><title type='text'>Zoom and page changed events for FlowDocumentPageViewer</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vmZ6fpkhezg/SwXVXwtl5ZI/AAAAAAAADDk/pZvfmXhaNy4/s1600/help_key.jpg"&gt;&lt;img style="margin: 10pt 0pt 10px 10px; float: right; cursor: pointer; width: 165px; height: 137px;" src="http://4.bp.blogspot.com/_vmZ6fpkhezg/SwXVXwtl5ZI/AAAAAAAADDk/pZvfmXhaNy4/s320/help_key.jpg" alt="" id="BLOGGER_PHOTO_ID_5405961531917985170" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Download source files - &lt;/span&gt;&lt;a style="font-style: italic;" href="http://snoopmyversion.googlecode.com/files/SearchVisualTree.zip"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My old known Bala send to me this &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/4a127007-c673-45ea-9b25-81d87fcea5d9"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;Kent Boogaart has written an article that describes approach searching and highlighting text in FlowDocumentPageViewer - &lt;a href="http://kentb.blogspot.com/2009/06/search-and-highlight-text-in-arbitrary.html"&gt;Search and Highlight Text in an Arbitrary Visual Tree&lt;/a&gt;. Unfortunate, two serious issues present there. I copy theirs description from msdn forum:&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li style="text-align: justify;"&gt;When I change the pages of the FlowDocumentPageViewer, my Rectangular highlighted area remains the same and it is not sinking with the Text.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;When I zoom in or zoom out of the FlowDocumentPageViewer, the text gets zoomed but the Highlight rectangle remains in the same position. &lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Seems.. solution should be easy - just add DoSeach() method in PageChanged and ZoomChanged event handler methods of &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.flowdocumentpageviewer.aspx"&gt;FlowDocumentPageViewer&lt;/a&gt; but it doesn't have events for notice these actions. So I decided just to implement these events :). &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.flowdocumentpageviewer.aspx"&gt;FlowDocumentPageViewer&lt;/a&gt; doesn't have protected and virtual methods like OnZoomChanged or OnPageChanged. It was bad. But I found four protected and virtual methods that  could help me they are OnNextPageCommand(), OnPreviousPageCommand(), OnIncreaseZoomCommand() and OnDecreaseZoomCommand(). When I added call to rise my events in theirs override methods I found that this approach wasn't work. It happened because command logic works through concurrency approach. I called the rise methods through &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.begininvoke.aspx"&gt;BeginInvoke&lt;/a&gt; for delay the calls rise methods - and problem was solved.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;You can download sources with fix above.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;PS: I didn't have time for full investigate sources.. but one question. Why did Kent use SearchRectangle class? In my opinion common &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.rect.aspx"&gt;Rect&lt;/a&gt; is enough.&lt;br /&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/1801684018053244846-3751944760219737719?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/3751944760219737719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=3751944760219737719' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3751944760219737719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3751944760219737719'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/11/zoom-and-page-chahged-events-for.html' title='Zoom and page changed events for FlowDocumentPageViewer'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vmZ6fpkhezg/SwXVXwtl5ZI/AAAAAAAADDk/pZvfmXhaNy4/s72-c/help_key.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-633312477598074846</id><published>2009-11-16T07:10:00.000-08:00</published><updated>2009-11-18T15:00:07.455-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='TextBox'/><category scheme='http://www.blogger.com/atom/ns#' term='PlaceHolder'/><title type='text'>How to implement TextBox with PlaceHolder in WPF</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vmZ6fpkhezg/SwFviVPUaRI/AAAAAAAADCg/CTcBiDAQVCg/s1600/logo.png"&gt;&lt;img style="margin: 10pt 0pt 10px 10px; float: right; cursor: pointer; width: 278px; height: 117px;" src="http://1.bp.blogspot.com/_vmZ6fpkhezg/SwFviVPUaRI/AAAAAAAADCg/CTcBiDAQVCg/s320/logo.png" alt="" id="BLOGGER_PHOTO_ID_5404723663428938002" border="0"&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Download source files - &lt;/span&gt;&lt;a style="font-style: italic;" href="http://snoopmyversion.googlecode.com/files/TextBoxWithPlaceHolder_src.zip"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using PlaceHolder is very useful thing for UI in any type application. I want to show a short way how can you implement it in WPF.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;You can custom &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.textbox.aspx"&gt;TextBox&lt;/a&gt; and add place-holder text on &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mouseenter.aspx"&gt;MouseEnter&lt;/a&gt; and remove on &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mouseleave.aspx"&gt;MouseLeave&lt;/a&gt; events. In this case place-holder's text looks like original text.. You can experiment with &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.control.foreground.aspx"&gt;Foreground&lt;/a&gt; property, but truth me - you will not be satisfy.&lt;br /&gt;&lt;/div&gt;Let my suggest other way. You can use &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.documents.adornerlayer.aspx"&gt;AdornerLayer&lt;/a&gt; for host the place-holder text. In this case you should create class that is inherit from &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.documents.adorner.aspx"&gt;Adorner&lt;/a&gt; and this class should show your place-holder text on &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.documents.adornerlayer.aspx"&gt;AdornerLayer&lt;/a&gt;. I've create little sample that demonstrate this.&lt;br /&gt;&lt;br /&gt;Unfortunate, &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.documents.adornerlayer.aspx"&gt;AdornerLayer&lt;/a&gt; doesn't presented over any &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup.aspx"&gt;Popup&lt;/a&gt; controls. So this solution isn't worked if you put our customized TextBox control in any &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup.aspx"&gt;Popup&lt;/a&gt; and as item in &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.menu.aspx"&gt;Menu&lt;/a&gt; or &lt;a href="http://msdn.microsoft.com/en-us/library/ms753382%28VS.85%29.aspx"&gt;ComboBox&lt;/a&gt; controls.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-633312477598074846?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/633312477598074846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=633312477598074846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/633312477598074846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/633312477598074846'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/11/how-to-implement-textbox-with.html' title='How to implement TextBox with PlaceHolder in WPF'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vmZ6fpkhezg/SwFviVPUaRI/AAAAAAAADCg/CTcBiDAQVCg/s72-c/logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-3635319411027851671</id><published>2009-10-16T12:15:00.000-07:00</published><updated>2009-11-16T23:44:27.135-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='CompositionTarget.Rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='RenderAtScale'/><category scheme='http://www.blogger.com/atom/ns#' term='VisualTreeHelper.FindElementsInHostCoordinates()'/><category scheme='http://www.blogger.com/atom/ns#' term='MaxFrameRate'/><category scheme='http://www.blogger.com/atom/ns#' term='EnableGPUAcceleration'/><category scheme='http://www.blogger.com/atom/ns#' term='BitmapCash'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Performance degrades in your Silverlight App!? What can you do?</title><content type='html'>&lt;img style="margin: 20pt 0pt 10px 10px; float: right; cursor: pointer; width: 150px; height: 150px;" src="http://www.sparklingclient.com/wp-content/uploads/2009/03/silverlight_logo1-150x150.jpg" alt="" border="0" /&gt;&lt;br /&gt;Some time ago I had written Silverlight app and I confronted with difficulties of difference between WPF and Silverlight :). When I had vanquished mismatches I found that performance of my app was serous degraded. I have done a little investigate of ways that can help to correct this issues.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;MaxFrameRate&lt;/li&gt;&lt;li&gt;EnableGPUAcceleration &amp;amp; BitmapCash&lt;/li&gt;&lt;li&gt;CompositionTarget.Rendering&lt;/li&gt;&lt;/ol&gt;&lt;a style="font-weight: bold; color: rgb(51, 51, 255);" href="http://msdn.microsoft.com/en-us/library/cc838147%28VS.95%29.aspx"&gt;&lt;span&gt;MaxFrameRate&lt;/span&gt;&lt;/a&gt; - presents the maximum number of frames that Silverlight can render per second. The default value is 60 second. I've set 30 in my app - looks pretty. This property likes &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.desiredframerate.aspx"&gt;DesiredFrameRate&lt;/a&gt; in WPF. Target is clear - reduce frame rate. It is useful when more animations are started in Silverlight app.&lt;br /&gt;You can set it from Silverlight code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;App.Current.Host.Settings.MaxFrameRate=30;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or as parameter of object on HTML page:&lt;br /&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;param name="framerate" value="30"&amp;gt; &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Pay attention there is a mismatch naming in Silverilght code and HTML. Why is it? You can read &lt;a href="http://msdn.microsoft.com/en-us/library/cc838147%28VS.95%29.aspx"&gt;there&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a style="color: rgb(51, 51, 255);" href="http://msdn.microsoft.com/en-us/library/system.windows.uielement.cachemode%28VS.95%29.aspx"&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;EnableGPUAcceleration &amp;amp; BitmapCash&lt;/span&gt;&lt;/a&gt; - allows to cache visual object when it is possible. You should switch on EnableGPUAcceleration that Cache  has any effect. This approach is useful when your app &lt;span&gt;has opacity or transform operations applied to it&lt;/span&gt;.&lt;br /&gt;You can set it from Silverlight code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;You can't change it from Silverlight because it should be set before app's initialization.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or as parameter of object on HTML page:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;param name="EnableGPUAcceleration" value="true" /&amp;gt; &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and set CacheMode. In current moment &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.bitmapcache%28VS.95%29.aspx"&gt;BitmapCache&lt;/a&gt;  is supported only.&lt;br /&gt;You can set it in C# code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LayoutRoot.CacheMode = new BitmapCache();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or in XAML:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;Grid x:Name="LayoutRoot" CacheMode="BitmapCache"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Some objects don't look well (high-resolution images for example) you can increase &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.bitmapcache.renderatscale%28VS.95%29.aspx"&gt;RenderAtScale&lt;/a&gt; property of   &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.bitmapcache%28VS.95%29.aspx"&gt;BitmapCache&lt;/a&gt; class for avoid this mess. Default value of this property is 1, when I set 4 (like MSDN's samples) quality restores but performance degrades again. A value between 2-3 is god for my app.&lt;br /&gt;You can set it in C# code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LayoutRoot.CacheMode = new BitmapCache&lt;br /&gt;{&lt;br /&gt;RenderAtScale = 2.5,&lt;br /&gt;};&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;or in XAML:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;Grid x:Name="LayoutRoot"&amp;gt;&lt;br /&gt;&amp;lt;Grid.CacheMode&amp;gt;&lt;br /&gt;&amp;lt;BitmapCache RenderAtScale="2.5" /&amp;gt;&lt;br /&gt;&amp;lt;/Grid.CacheMode&amp;gt;&lt;br /&gt;&amp;lt;/Grid&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="color: rgb(51, 51, 255);" href="http://msdn.microsoft.com/en-us/library/system.windows.media.compositiontarget.rendering.aspx"&gt;&lt;span style="font-weight: bold;"&gt;CompositionTarget.Rendering&lt;/span&gt;&lt;/a&gt; - this  event rises before the objects in the composition tree are rendered. How does it can help? In common case - doesn't. But if you zoom your object in app (or in same other manner move out of bounds some item) - it is very useful. Look in my case:&lt;br /&gt;First - subscribe event handler's method in constructor of your main window:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CompositionTarget.Rendering += new EventHandler( OnCompositionTargetRendering );&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Second - handler method:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;private void OnCompositionTargetRendering( object sender, EventArgs e )&lt;br /&gt;{&lt;br /&gt;//--- Start 1 -- //&lt;br /&gt;foreach ( GalleryItem item in xGalleryCanvas.Children )&lt;br /&gt;{&lt;br /&gt; if ( Visibility.Collapsed == item.Visibility )&lt;br /&gt; {&lt;br /&gt;  item.Visibility = Visibility.Visible;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;//--- End 1 -- //&lt;br /&gt;//--- Start 2 -- //&lt;br /&gt;if ( _isZoomed &amp;amp;&amp;amp; 0 &lt; rect =" new" visibleitems =" VisualTreeHelper.FindElementsInHostCoordinates(" f =""&gt; f.GetType() == typeof( GalleryItem ) );&lt;br /&gt;&lt;br /&gt; foreach ( GalleryItem item in xGalleryCanvas.Children )&lt;br /&gt; {&lt;br /&gt;  if ( !visibleItems.Contains( item ) )&lt;br /&gt;  {&lt;br /&gt;   item.Visibility = Visibility.Collapsed;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;//--- End 2 -- //&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;Some explanation: You should ascertain that all items are visible (block 1).&lt;br /&gt;&lt;u style="font-style: italic;"&gt;Note:&lt;/u&gt; Dependency property works not so good as in WPF. So you should change Visibility only of collapsed items. In other case you serious reduce the performance.&lt;br /&gt;Use mix of &lt;a href="http://msdn.microsoft.com/en-us/library/cc838303%28VS.95%29.aspx"&gt;FindElementsInHostCoordinates()&lt;/a&gt; of &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.visualtreehelper_members%28VS.95%29.aspx"&gt;VisualTreeHelper&lt;/a&gt; and LINQ for create collection all visible items in current moment and collapse all other items (block 2).&lt;br /&gt;&lt;br /&gt;Promise these three approaches can help as these help me.&lt;br /&gt;&lt;br /&gt;PS: Recently I've found useful tips of Silverlight performance. You can read it there - &lt;a href="http://msdn.microsoft.com/en-gb/library/cc189071%28VS.95%29.aspx"&gt;Performance Tips.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-3635319411027851671?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/3635319411027851671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=3635319411027851671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3635319411027851671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3635319411027851671'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/10/performance-degrades-in-your.html' title='Performance degrades in your Silverlight App!? What can you do?'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-8144087558496657055</id><published>2009-08-12T07:20:00.000-07:00</published><updated>2009-08-13T01:16:45.293-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anonymous method'/><category scheme='http://www.blogger.com/atom/ns#' term='Net.Framework 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Trips&amp;Ticks: Do you know how you can unsubscribe from anonymous method?</title><content type='html'>&lt;a href="http://msdn.microsoft.com/en-us/library/0yw3tz5k%28VS.80%29.aspx"&gt;Anonymous Methods&lt;/a&gt; is a useful &lt;span id="ctl00_altSelector"&gt;&lt;span&gt;feature&lt;/span&gt;&lt;/span&gt;&lt;span id="ctl00_altSelector"&gt;&lt;span&gt; which we &lt;/span&gt;&lt;/span&gt;&lt;span id="ctl00_altSelector"&gt;&lt;span&gt;receive in &lt;/span&gt;&lt;/span&gt;&lt;span id="ctl00_altSelector"&gt;&lt;span&gt;Framework 2.0. It allows to easy pass &lt;/span&gt;&lt;/span&gt;a small code block as a delegate parameter (you can set a large block code but this code will be harmful because it is complex and isn't clear for perception). For example:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;button1.Click += delegate&lt;br /&gt;{&lt;br /&gt; MessageBox.Show( "Anonymous" );&lt;br /&gt;};&lt;/code&gt;&lt;/pre&gt;But I have one trouble. What can I do if I want to unsubscribe from event. Seems it is subscribed finally, isn't it?.. Noup! If  we declare instance of delegate before define we can unsubscribe a event from this delegate in the code block. For example:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;EventHandler handler = null;&lt;br /&gt;&lt;br /&gt;handler = delegate&lt;br /&gt;{&lt;br /&gt; MessageBox.Show( "Anonymous" );&lt;br /&gt; button2.Click -= handler;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;button2.Click += handler;&lt;/code&gt;&lt;/pre&gt;So if we click on button1 we receive message box always. If we click on button2 we receive message box once.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-8144087558496657055?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/8144087558496657055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=8144087558496657055' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8144087558496657055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8144087558496657055'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/08/trips-do-you-know-how-you-can.html' title='Trips&amp;Ticks: Do you know how you can unsubscribe from anonymous method?'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-4238622488020548183</id><published>2009-07-29T22:21:00.000-07:00</published><updated>2009-08-05T01:35:59.844-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='Net.Framework 3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQPad'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>LINQPad (new version) - nice tool that can help you to stady LINQ.</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vmZ6fpkhezg/Snk6WfZCrUI/AAAAAAAAC3U/QqJD11W-A0c/s1600-h/logo.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 205px; height: 163px;" src="http://3.bp.blogspot.com/_vmZ6fpkhezg/Snk6WfZCrUI/AAAAAAAAC3U/QqJD11W-A0c/s400/logo.gif" alt="" id="BLOGGER_PHOTO_ID_5366384589046721858" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.linqpad.net/"&gt;LINQPad&lt;/a&gt; is nice tool that can help you to study &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa904594.aspx"&gt;LINQ&lt;/a&gt;. I have read firs overview of this tool. Absence auto-complete grieves  most people. Auto-complete is present in new version. This option requiring payment. IMHO: auto-complete is more detrimental than efficiency for studying (but very useful for work).&lt;br /&gt;But I want say not about that. &lt;a href="http://www.linqpad.net/"&gt;LINQPad&lt;/a&gt; is obtain other interesting feature. Author of this tool &lt;a href="http://www.albahari.com/"&gt;Joseph Albahari&lt;/a&gt; with your brother had written book &lt;a href="http://www.albahari.com/nutshell/"&gt;"C# 3.0 in a Nutshell"&lt;/a&gt; and he added LINQ samples from this book to &lt;a href="http://www.linqpad.net/"&gt;LINQPad&lt;/a&gt;. You can  not only investigate different case moreover you can see how it look in lambda and IL code.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vmZ6fpkhezg/Snk7GgIbP2I/AAAAAAAAC3c/PudzQ6Y_diw/s1600-h/main.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 206px;" src="http://1.bp.blogspot.com/_vmZ6fpkhezg/Snk7GgIbP2I/AAAAAAAAC3c/PudzQ6Y_diw/s400/main.jpg" alt="" id="BLOGGER_PHOTO_ID_5366385413879185250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Investigate these samples in IL code should be very interesting ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-4238622488020548183?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/4238622488020548183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=4238622488020548183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4238622488020548183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4238622488020548183'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/07/linqpad-nice-tool-that-can-help-you.html' title='LINQPad (new version) - nice tool that can help you to stady LINQ.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vmZ6fpkhezg/Snk6WfZCrUI/AAAAAAAAC3U/QqJD11W-A0c/s72-c/logo.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-5763608913068802868</id><published>2009-07-19T02:07:00.000-07:00</published><updated>2009-07-21T23:39:18.465-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Net.Framework 3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='attribute'/><category scheme='http://www.blogger.com/atom/ns#' term='C# 3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Do you know about LINQ that.. ?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vmZ6fpkhezg/SmaynY6HMoI/AAAAAAAAC2U/9gQKgETikag/s1600-h/linq-2-sql-hand-small-thumb.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 213px; height: 213px;" src="http://1.bp.blogspot.com/_vmZ6fpkhezg/SmaynY6HMoI/AAAAAAAAC2U/9gQKgETikag/s400/linq-2-sql-hand-small-thumb.gif" alt="" id="BLOGGER_PHOTO_ID_5361168796201988738" border="0" /&gt;&lt;/a&gt;Do you know about LINQ to SQL that attribute is more important than value? What is it mean? My friend have found interesting relation. He had written LINQ to SQL where he checked a column value to null but he was disappointed - it wasn't worked if it was need. He had null values in set but LINQ code didn't see they (He had written simple test code with &lt;a href="http://msdn.microsoft.com/en-us/library/ttw7t8t6%28VS.80%29.aspx"&gt;foreach&lt;/a&gt; - it worked). After some investigate he has found that trouble in mapped data. Particular property was marked &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.columnattribute.aspx"&gt;ColumnAttribute&lt;/a&gt; with set &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.columnattribute.canbenull.aspx"&gt;CanBeNull&lt;/a&gt; property false. So LINQ implicitly optimizes him code regards attribute's value (skips the check to null).&lt;br /&gt;PS: It shows that we should be careful to small thing.. because small things can implicitly brings a big and strange problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-5763608913068802868?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/5763608913068802868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=5763608913068802868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5763608913068802868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5763608913068802868'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/07/do-you-know-about-linq-that.html' title='Do you know about LINQ that.. ?'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vmZ6fpkhezg/SmaynY6HMoI/AAAAAAAAC2U/9gQKgETikag/s72-c/linq-2-sql-hand-small-thumb.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-3502834164619026131</id><published>2009-07-19T01:40:00.000-07:00</published><updated>2009-07-19T02:06:43.138-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Net.Framework 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Net.Framework 3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='C# 3.5'/><title type='text'>Do you know about nested class that.. ?</title><content type='html'>&lt;span style="font-style: italic;"&gt;Download source files - &lt;/span&gt;&lt;a href="http://snoopmyversion.googlecode.com/files/Nested+Partial.zip"&gt;&lt;span style="font-style: italic;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vmZ6fpkhezg/SmLhuIDH55I/AAAAAAAAC1g/iI3eKJm4qPk/s1600-h/smlapt.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 101px; height: 66px;" src="http://4.bp.blogspot.com/_vmZ6fpkhezg/SmLhuIDH55I/AAAAAAAAC1g/iI3eKJm4qPk/s400/smlapt.jpg" alt="" id="BLOGGER_PHOTO_ID_5360094689075128210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Do you know about nested class that you can make nested class as partial? Yep, You can do it. Exactly your main class should be partial too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-3502834164619026131?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/3502834164619026131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=3502834164619026131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3502834164619026131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3502834164619026131'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/07/do-you-know-about-nested-class-that.html' title='Do you know about nested class that.. ?'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vmZ6fpkhezg/SmLhuIDH55I/AAAAAAAAC1g/iI3eKJm4qPk/s72-c/smlapt.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-5193238138383242478</id><published>2009-06-16T12:52:00.000-07:00</published><updated>2009-06-16T22:11:03.163-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='DataContext'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='Binding'/><title type='text'>This whimsical binding. TwoWay Binding to DataContext. Binding in WPF part 3.</title><content type='html'>I often use &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.aspx"&gt;Binding&lt;/a&gt; to &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.datacontext.aspx"&gt;DataContext&lt;/a&gt;. It is one of the main advantage of WPF. In most case I set custom class inherit of &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.dependencyobject.aspx"&gt;DependencyObject&lt;/a&gt; (for support &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.dependencyproperty.aspx"&gt;DependencyProperty&lt;/a&gt;) and I have some like next code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;StackPanel&amp;gt;&lt;br /&gt;  &amp;lt;TextBlock Text="{Binding Path=Id}" /&amp;gt;&lt;br /&gt;  &amp;lt;TextBlock Text="{Binding Path=Name}" /&amp;gt;&lt;br /&gt;  &amp;lt;TextBlock Text="{Binding Path=Surname}"/&amp;gt;&lt;br /&gt;...&lt;br /&gt; &amp;lt;/StackPanel&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;But sometime I set a simple type for example string. For this case I can implement next &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.aspx"&gt;Binding&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;TextBlock Text="{Binding}" /&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Note:&lt;/span&gt; Pay attention, when we bind directly to &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.datacontext.aspx"&gt;DataContext&lt;/a&gt; I have written a short form (only 'binding' keyword).&lt;br /&gt;&lt;br /&gt;But when I try to implement &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.bindingmode%28VS.95%29.aspx"&gt;TwoWay&lt;/a&gt; &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.aspx"&gt;Binding&lt;/a&gt; to &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.datacontext.aspx"&gt;DataContext&lt;/a&gt;. I have exception - "Two-way binding requires Path or XPath.". It cannot set a value from somewhere because it doesn't know where it came from. I can easy fix it. For example property  &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.togglebutton.ischecked.aspx"&gt;IsChecked&lt;/a&gt; of &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.checkbox.aspx"&gt;CheckBox&lt;/a&gt; has request &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.bindingmode%28VS.95%29.aspx"&gt;TwoWay&lt;/a&gt; &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.aspx"&gt;Binding&lt;/a&gt; in metadata. For this case I have written next code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;CheckBox IsChecked="{Binding Path=DataContext, RelativeSource={RelativeSource Self}}"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It is not so graceful, but it works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-5193238138383242478?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/5193238138383242478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=5193238138383242478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5193238138383242478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5193238138383242478'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/06/this-whimsical-binding-twoway-binding.html' title='This whimsical binding. TwoWay Binding to DataContext. Binding in WPF part 3.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-8141861636235939336</id><published>2009-06-02T14:20:00.000-07:00</published><updated>2009-06-02T16:32:02.225-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Bind to a Method'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='ObjectDataProvider'/><category scheme='http://www.blogger.com/atom/ns#' term='attribute'/><category scheme='http://www.blogger.com/atom/ns#' term='C# 3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='Binding'/><title type='text'>Trips&amp;Ticks: Set custom presented view for enum's fields in WPF.</title><content type='html'>&lt;span style="font-style: italic;"&gt;Download source files - &lt;/span&gt;&lt;a style="font-style: italic;" href="http://snoopmyversion.googlecode.com/files/EnumsSample_src.zip"&gt;here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Download bin files - &lt;/span&gt;&lt;a style="font-style: italic;" href="http://snoopmyversion.googlecode.com/files/EnumsSample_bin.zip"&gt;here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vmZ6fpkhezg/SiWXlsThyFI/AAAAAAAABrs/jl7TWo1dur4/s1600-h/Untitled.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 348px; height: 260px;" src="http://3.bp.blogspot.com/_vmZ6fpkhezg/SiWXlsThyFI/AAAAAAAABrs/jl7TWo1dur4/s400/Untitled.png" alt="" id="BLOGGER_PHOTO_ID_5342843206748981330" border="0" /&gt;&lt;/a&gt;How you know, &lt;a href="http://msdn.microsoft.com/en-us/library/system.enum.aspx"&gt;Enum&lt;/a&gt; can have underlying type as byte, sbyte, short, ushort, int, uint, long, or ulong. Often and often we need to present a view of &lt;a href="http://msdn.microsoft.com/en-us/library/system.enum.aspx"&gt;Enum&lt;/a&gt;'s values in visual elements. Usually enum's name isn't smooth for human look. As I have said we can't set for example string as underlying type and apply it as presented view.. We can use converter inherit from &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx"&gt;IValueConverter&lt;/a&gt; but it isn't comfortably as we need to reimplement it each time when  &lt;a href="http://msdn.microsoft.com/en-us/library/system.enum.aspx"&gt;Enum&lt;/a&gt;'s count or order will be changed. I have implemented a simple class inherits from &lt;a href="http://msdn.microsoft.com/en-us/library/system.attribute.aspx"&gt;Attribute&lt;/a&gt; for set  human smooth presented view:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[AttributeUsage( AttributeTargets.Field )]&lt;br /&gt;public class ViewEnumAttribute : Attribute&lt;br /&gt;{&lt;br /&gt;public ViewEnumAttribute( String view )&lt;br /&gt;{&lt;br /&gt;View = view;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String View&lt;br /&gt;{&lt;br /&gt;get;&lt;br /&gt;private set;&lt;br /&gt;}&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;We set AttributeTargets as Field for restrict scope of our attribute. Use of attribute is very simple:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;public enum MyEnum&lt;br /&gt;{&lt;br /&gt;[ViewEnum( "My View Value 1" )]&lt;br /&gt;MyEnumValue1,&lt;br /&gt;[ViewEnum( "My View Value 2" )]&lt;br /&gt;MyEnumValue2,&lt;br /&gt;[ViewEnum( "My View Value 3" )]&lt;br /&gt;MyEnumValue3,&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and we extract this value when it is need:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;private static object GetEnumView( Type fieldType, string fieldName )&lt;br /&gt;{&lt;br /&gt;FieldInfo info = fieldType.GetField( fieldName );&lt;br /&gt;&lt;br /&gt;if( null != info )&lt;br /&gt;{&lt;br /&gt;foreach( ViewEnumAttribute attribute in info.GetCustomAttributes( typeof( ViewEnumAttribute ), false ) )&lt;br /&gt;{&lt;br /&gt;return attribute.View;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return fieldName;&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;For more details of realization you can look in attached above source files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-8141861636235939336?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/8141861636235939336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=8141861636235939336' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8141861636235939336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8141861636235939336'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/06/trips-set-custom-presented-view-for.html' title='Trips&amp;Ticks: Set custom presented view for enum&apos;s fields in WPF.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vmZ6fpkhezg/SiWXlsThyFI/AAAAAAAABrs/jl7TWo1dur4/s72-c/Untitled.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-3236118258384726344</id><published>2009-05-18T12:55:00.000-07:00</published><updated>2009-06-16T13:31:37.319-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='ObservableCollection'/><category scheme='http://www.blogger.com/atom/ns#' term='DataContext'/><category scheme='http://www.blogger.com/atom/ns#' term='Net.Framework 3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='attribute'/><category scheme='http://www.blogger.com/atom/ns#' term='Inherit'/><title type='text'>Implementing support of own child/children in WPF control.</title><content type='html'>&lt;span&gt;&lt;span style="font-style: italic;"&gt;Download source files - &lt;a href="http://snoopmyversion.googlecode.com/files/custom_cc_src.zip"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt;Download bin files - &lt;a href="http://snoopmyversion.googlecode.com/files/custom_cc_bin.zip"&gt;here&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vmZ6fpkhezg/ShM0Fi3i9nI/AAAAAAAABrM/iq0fH48mD1g/s1600-h/title.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 306px; height: 233px;" src="http://2.bp.blogspot.com/_vmZ6fpkhezg/ShM0Fi3i9nI/AAAAAAAABrM/iq0fH48mD1g/s400/title.gif" alt="" id="BLOGGER_PHOTO_ID_5337667253227943538" border="0" /&gt;&lt;/a&gt;The best way for use child/children in WPF is customize any control with property for child/children that inherit from &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.control.aspx"&gt;Control &lt;/a&gt;(for example &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.contentcontrol.aspx"&gt;ContentControl&lt;/a&gt; or &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.aspx"&gt;ItemsControl&lt;/a&gt;). &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.control.aspx"&gt;Control&lt;/a&gt; has wide possibility of customizing through &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.controltemplate.aspx"&gt;ControlTemplate&lt;/a&gt;.  But sometime we want to have a specific behaviour of child/children (for example if we want to implement MDI container any other specific container). What should you do for implementing this behaviour? I will show major steps in sample of simple custom panel that is inherited from &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.aspx"&gt;FrameworkElement&lt;/a&gt;.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;First of all you should add property according type that will be contain child/children. I use Children property in my sample. It is list of &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.uielement.aspx"&gt;UIElement&lt;/a&gt;. I use &lt;a href="http://msdn.microsoft.com/en-us/library/ms668604.aspx"&gt;ObservableCollection&lt;t&gt;&lt;/t&gt;&lt;/a&gt; because I need to react to collection change.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You should see to show child/children in your control, you should override  &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.visualchildrencount.aspx"&gt;int VisualChildrenCount&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.getvisualchild.aspx"&gt;Visual GetVisualChild( int)&lt;/a&gt;. These method and property should get value accordingly with child/children property (child/children's count and this/these element/s according to index).&lt;/li&gt;&lt;li&gt;Your app can correct build now but still nothing shows in app when it is run. It is happened because child/children doesn't/don't know their size and position on parent. You should override &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.measureoverride.aspx"&gt;Size MeasureOverride(Size)&lt;/a&gt; for pass size (and calculate &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.uielement.desiredsize.aspx"&gt;DesiredSize&lt;/a&gt; in child) to child's element and &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.arrangeoverride%28VS.95%29.aspx"&gt;Size ArrangeOverride(Size)&lt;/a&gt; for pass position on parent. When you run app again you can see child/children in your custom control. You should point out to sizes that are returned in these method, MeasureOverride's size says to parent &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.uielement.desiredsize.aspx"&gt;DesiredSize&lt;/a&gt; of your custom control and ArrangeOverride says to parent square that were taken.&lt;/li&gt;&lt;li&gt;Now you can see that your custom control is run correct, but when you try to interact with their child/children you can see that interact is fail. It is happened because child/children property isn't/aren't added to &lt;a href="http://msdn.microsoft.com/en-us/library/ms748373.aspx#visual_tree"&gt;visual tree&lt;/a&gt; of your custom control. &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.visual.addvisualchild.aspx"&gt;AddVisualChild(Visual) &lt;/a&gt;method helps you in this. The best way is realized this behavior  in property changed method for child or collection changed method for children. Pay attention that property changed isn't called for default value for your child/children property. We have some other reason set null as default value, but I say below about it.&lt;/li&gt;&lt;li&gt;If you test your custom control more careful you can observe that interaction isn't complete. Yeah, visual interaction you have already implemented, but logical isn't complete. How can you observe it? Easy, try to use attached and inherit properties or DataContext - they don't work. You should add child/children to &lt;a href="http://msdn.microsoft.com/en-us/library/ms753391.aspx#logical_tree"&gt;logical tree&lt;/a&gt; of your custom control. &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.addlogicalchild.aspx"&gt;AddLogicalChild(Object)&lt;/a&gt; helps. You can call this method together with &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.visual.addvisualchild.aspx"&gt;AddVisualChild&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Be careful, if you want to remove element from child/children you shouldn't remember that this element should be removed from &lt;a href="http://msdn.microsoft.com/en-us/library/ms748373.aspx#visual_tree"&gt;visual tree&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/ms753391.aspx#logical_tree"&gt;logical tree&lt;/a&gt;. &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.visual.removevisualchild.aspx"&gt;RemoveVisualChild(Visual) &lt;/a&gt;and &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.removelogicalchild.aspx"&gt;RemoveLogicalChild(Object)&lt;/a&gt; help you in this.&lt;/li&gt;&lt;li&gt;Interaction works correct now, but you can see new trouble, if you add/remove child/children in run-time you can't see any visual effect until do any change of size in app. It is happen because your custom control knows nothing about this add/remove action. If you are implementing child you can add &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.affectsarrange%28VS.85%29.aspx"&gt;AffectsArrange&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.affectsmeasure%28VS.85%29.aspx"&gt;AffectsMeasure&lt;/a&gt; flag to metadata of child property, they mean that custom control should do arrange and measure after each property change. If you are implementing children you should call &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.uielement.invalidatevisual.aspx"&gt;InvalidateVisual()&lt;/a&gt; after each collection change. Added/Removed item shows/disappears  immediately now.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If you want set child/children property through XAML you should explicitly set your child/children property. You can apply to your custom control attribute &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.contentpropertyattribute.aspx"&gt;ContentPropertyAttribute&lt;/a&gt;. So you can implicitly set your child/children property.&lt;/li&gt;&lt;li&gt;In point #4 I have promised to say why you can't set default value no null. Pay attention that Dependency property is static member of class, so refer of one default value is added to all instances of your custom class. So you should use type that inherit form ValueType as type of dependency property or reinitialize default value in constructor (You should chose second way:).&lt;/li&gt;&lt;li&gt;My &lt;a href="http://www.linkedin.com/pub/volodymyr-mudrikuv/4/762/17a"&gt;coworker&lt;/a&gt; have found interesting trouble with &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.flowdirection.aspx"&gt;RightToLeft&lt;/a&gt; support. His custom control can correct support &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.flowdirection.aspx"&gt;RightToLeft&lt;/a&gt; only after he overrides &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.logicalchildren.aspx"&gt;LogicalChildren&lt;/a&gt; property. I can't reproduce it, but want to inform about possible trouble and solution for it.&lt;/li&gt;&lt;/ol&gt;I have written detailed road map with explanations. If some details aren't clear you can download sample with source code (case with children is implemented there).&lt;br /&gt;Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-3236118258384726344?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/3236118258384726344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=3236118258384726344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3236118258384726344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3236118258384726344'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/05/implementing-support-of-own.html' title='Implementing support of own child/children in WPF control.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vmZ6fpkhezg/ShM0Fi3i9nI/AAAAAAAABrM/iq0fH48mD1g/s72-c/title.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-2996545409340155556</id><published>2009-05-12T06:55:00.000-07:00</published><updated>2009-08-27T02:12:22.777-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSDN'/><category scheme='http://www.blogger.com/atom/ns#' term='C# 3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Some samples of "101 LINQ Samples" aren't valid.</title><content type='html'>My &lt;a href="http://rredcat.blogspot.com/2009/05/101-linq-samples.html"&gt;previous post (101 LINQ Samples)&lt;/a&gt; refers to very interesting samples. But I didn't pay attention that it is announcement as "future" features. So some of these samples aren't valid (were not implemented).&lt;br /&gt;I'm not one found this trouble, in this &lt;a href="http://bytes.com/groups/net-c/835119-linq-fold-equalall"&gt;forum thread&lt;/a&gt; shows what we can use instead of Fold (Aggregate) and EqualAll (SequenceEqual), we should use own realization according to situations for some other operations (SelectMany, Combine).&lt;br /&gt;&lt;br /&gt;"Everybody lies" (c) House M.D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-2996545409340155556?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/2996545409340155556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=2996545409340155556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2996545409340155556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2996545409340155556'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/05/same-sample-of-101-linq-samples-arent.html' title='Some samples of &quot;101 LINQ Samples&quot; aren&apos;t valid.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-6998324884154462555</id><published>2009-05-07T08:58:00.000-07:00</published><updated>2009-05-12T06:58:46.877-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSDN'/><category scheme='http://www.blogger.com/atom/ns#' term='C# 3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>101 LINQ Samples</title><content type='html'>Sometimes I work with LINQ. So I have completed a task and after some time I should try recall my knowledge of LINQ for new task. It is inconveniently as I should search some info time and again. I have found a great simple LINQ samples. It is very useful and clear for novice. So I can avoid a new recall next time :).&lt;br /&gt;This document locates there -&lt;a href="http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx"&gt;  LINQ Samples&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-6998324884154462555?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/6998324884154462555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=6998324884154462555' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/6998324884154462555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/6998324884154462555'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/05/101-linq-samples.html' title='101 LINQ Samples'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-441112584131610298</id><published>2009-04-21T00:15:00.000-07:00</published><updated>2009-04-21T15:06:41.672-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='line break'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='attribute'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>Trips&amp;Ticks: Do you know how you can break text in any text control of WPF?</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vmZ6fpkhezg/Se12Z4jUigI/AAAAAAAABo0/56tWfiTqFMc/s1600-h/009.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 129px; height: 129px;" src="http://3.bp.blogspot.com/_vmZ6fpkhezg/Se12Z4jUigI/AAAAAAAABo0/56tWfiTqFMc/s400/009.jpg" alt="" id="BLOGGER_PHOTO_ID_5327044121298504194" border="0" /&gt;&lt;/a&gt;Seems it is easy - we can use a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.documents.linebreak.aspx"&gt;LineBreak&lt;/a&gt; in code or as XAML element, but what can we do if we want to present this in attribute of XAML? Little searching shows that we should use XSLT and hexadecimally encoded value to present a literal.&lt;br /&gt;&lt;code&gt;&amp;lt;TextBlock Text=&amp;quot;Line 1&lt;b&gt;&amp;amp;#x0A;&lt;/b&gt;Line 2&amp;quot; /&amp;gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-441112584131610298?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/441112584131610298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=441112584131610298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/441112584131610298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/441112584131610298'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/04/trips-do-you-know-how-you-can-break.html' title='Trips&amp;Ticks: Do you know how you can break text in any text control of WPF?'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vmZ6fpkhezg/Se12Z4jUigI/AAAAAAAABo0/56tWfiTqFMc/s72-c/009.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-3736554870034023995</id><published>2009-04-13T06:19:00.000-07:00</published><updated>2009-04-13T23:58:23.954-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Nested Types'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='Binding'/><title type='text'>Trips&amp;Ticks: Do you know how can you obtain access to nested types through XAML?</title><content type='html'>&lt;span&gt;&lt;span style="font-style: italic;"&gt;Download source files&lt;/span&gt;&lt;/span&gt; &lt;span style="font-style: italic;"&gt;- &lt;a href="http://snoopmyversion.googlecode.com/files/NestedAccess.zip"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;a href="http://snoopmyversion.googlecode.com/files/NestedAccess.zip"&gt;.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vmZ6fpkhezg/SeM7_Xn1_hI/AAAAAAAABn8/IY2mE5lpOIY/s1600-h/TREE_SAPLING_BREAKING_THROUGH_ASPHALT_PANTANAL_BRAZIL.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 207px; height: 138px;" src="http://4.bp.blogspot.com/_vmZ6fpkhezg/SeM7_Xn1_hI/AAAAAAAABn8/IY2mE5lpOIY/s400/TREE_SAPLING_BREAKING_THROUGH_ASPHALT_PANTANAL_BRAZIL.jpg" alt="" id="BLOGGER_PHOTO_ID_5324165144340987410" border="0" /&gt;&lt;/a&gt;XAML is a declarative XML-based language created by Microsoft which is used to initialize structured values and objects. I have already written how we can obtain access to properties of instance that located in other properties &lt;a href="http://rredcat.blogspot.com/2008/11/binding-of-wpf-is-different-and-pretty.html"&gt;here&lt;/a&gt; (I have described binding's potential). But what can we do if we need to access to nested type? Which syntax should me use? It is easy: "+" indicates nested type in XAML:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;local:MultiLevelButton+NestedInfo.NestedName&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;A lot of code snippets you can see in sources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-3736554870034023995?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/3736554870034023995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=3736554870034023995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3736554870034023995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3736554870034023995'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/04/trips-do-you-know-how-can-you-obtain.html' title='Trips&amp;amp;Ticks: Do you know how can you obtain access to nested types through XAML?'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vmZ6fpkhezg/SeM7_Xn1_hI/AAAAAAAABn8/IY2mE5lpOIY/s72-c/TREE_SAPLING_BREAKING_THROUGH_ASPHALT_PANTANAL_BRAZIL.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-3755534507520219142</id><published>2009-03-03T23:47:00.000-08:00</published><updated>2009-03-04T01:00:06.822-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OnTime'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='bts'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>OnTime desktop light client.</title><content type='html'>&lt;span style="font-style: italic;"&gt;Download source files - &lt;/span&gt;&lt;a style="font-style: italic;" href="http://snoopmyversion.googlecode.com/files/LiteOT_src.zip"&gt;here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt;Download binary files - &lt;a href="http://snoopmyversion.googlecode.com/files/LiteOT_bin.zip"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vmZ6fpkhezg/Sa4-zXKga5I/AAAAAAAABlE/a49tao7ZOt0/s1600-h/683815.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 48px; height: 48px;" src="http://2.bp.blogspot.com/_vmZ6fpkhezg/Sa4-zXKga5I/AAAAAAAABlE/a49tao7ZOt0/s400/683815.png" alt="" id="BLOGGER_PHOTO_ID_5309250062828727186" border="0" /&gt;&lt;/a&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;My previous customer uses &lt;a href="http://www.axosoft.com/products/ontime.aspx"&gt;OnTime&lt;/a&gt; as &lt;a href="http://en.wikipedia.org/wiki/Bug_tracking_system"&gt;bts&lt;/a&gt;. It is very slowly tool. I hated it! I tired to wait any respond from this app. I have created a little and more fast tool for self using. This tool ins't complete (I have stopped to work with this customer and I can't have an access to bd for continue implementation).&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Next issues need a fix:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL exception isn't handled infrequent :)&lt;/li&gt;&lt;li&gt;Icons aren't useful. Useful tooltips correct this defect ;)&lt;/li&gt;&lt;li&gt;Attachment download works in some thread that GUI (It is shameful, but I haven't had time, really)&lt;/li&gt;&lt;li&gt;App works readonly.&lt;/li&gt;&lt;li&gt;Sort and Search hasn't implemented.&lt;/li&gt;&lt;li&gt;We can work with self issues only.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Advantage&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is really more fast tool than official.&lt;/li&gt;&lt;li&gt;Persist state doesn't store in bd. It saves in current PC only.&lt;/li&gt;&lt;/ul&gt;Axosoft releases new version (9.0). It is more fast than previous (8.0). But it is still no enough.&lt;br /&gt;If you want to implement some features or to fix bugs you need to know that for correct run sources you need to set connection string in the next files:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;app.config&lt;/li&gt;&lt;li&gt;Settings.Designer.cs&lt;/li&gt;&lt;li&gt;OTData.dbml&lt;/li&gt;&lt;li&gt;and Settings.settings in two points.&lt;/li&gt;&lt;/ol&gt;I have changed my connect string to "your_connecting_string" for more handy replace ;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-3755534507520219142?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/3755534507520219142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=3755534507520219142' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3755534507520219142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3755534507520219142'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/03/ontime-desktop-light-client.html' title='OnTime desktop light client.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vmZ6fpkhezg/Sa4-zXKga5I/AAAAAAAABlE/a49tao7ZOt0/s72-c/683815.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-4106253790824359709</id><published>2009-02-03T12:37:00.000-08:00</published><updated>2009-02-04T04:39:46.124-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Template'/><category scheme='http://www.blogger.com/atom/ns#' term='Singlton Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='Style'/><category scheme='http://www.blogger.com/atom/ns#' term='Prototype Pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='x:Shared'/><title type='text'>Trips&amp;Ticks: Do you know how you can extract various instances of one object out of resources in WPF?</title><content type='html'>&lt;span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Download source files - &lt;a href="http://snoopmyversion.googlecode.com/files/PrototypeSample_src.zip"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vmZ6fpkhezg/SYjGszyEe1I/AAAAAAAABjY/NZsvUFBsZLI/s1600-h/logo.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 308px; height: 223px;" src="http://2.bp.blogspot.com/_vmZ6fpkhezg/SYjGszyEe1I/AAAAAAAABjY/NZsvUFBsZLI/s400/logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5298703434718149458" border="0" /&gt;&lt;/a&gt;I often use a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.controltemplate.aspx"&gt;style&amp;amp;template&lt;/a&gt; that is magnificent possibility of WPF. It allows to define one style out of resources to many elements. I can easily define instance of some object in resources and extract it there where I require. But it has one limitation:&lt;br /&gt;For example for following:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-weight: bold;"&gt;XAML:&lt;/span&gt;&lt;br /&gt;&amp;lt;Button x:Key="ButtonPrototype" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;C#:&lt;/span&gt;&lt;br /&gt;Resources["ButtonPrototype"];&lt;/code&gt; - returns always  one instance (like &lt;a href="http://www.dofactory.com/Patterns/PatternSingleton.aspx"&gt;Singlton Pattern&lt;/a&gt;). But what can I make if I require more than one such object? It isn't problem as XAML is very flexible and &lt;a href="http://msdn.microsoft.com/en-us/library/aa970778.aspx"&gt;x:Shared&lt;/a&gt; attribute eliminates this trouble. Following code will extract various instances:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-weight: bold;"&gt;XAML:&lt;/span&gt;&lt;br /&gt;&amp;lt;Button x:Key="ButtonPrototype"&lt;span style="color: rgb(0, 204, 204);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;x:Shared="False"&lt;/span&gt; /&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;C#&lt;/span&gt;&lt;br /&gt;Resources["ButtonPrototype"]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PS:&lt;/span&gt; In my opinion last realization shares traits with &lt;a href="http://www.dofactory.com/Patterns/PatternPrototype.aspx"&gt;Prototype Pattern&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-4106253790824359709?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/4106253790824359709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=4106253790824359709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4106253790824359709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/4106253790824359709'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/02/trips-do-you-know-how-you-can-extract.html' title='Trips&amp;Ticks: Do you know how you can extract various instances of one object out of resources in WPF?'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vmZ6fpkhezg/SYjGszyEe1I/AAAAAAAABjY/NZsvUFBsZLI/s72-c/logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-8169233217342510504</id><published>2009-01-10T02:42:00.000-08:00</published><updated>2009-02-04T04:53:50.943-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Bind to a Method'/><category scheme='http://www.blogger.com/atom/ns#' term='ObjectDataProvider'/><category scheme='http://www.blogger.com/atom/ns#' term='MultiBinding'/><category scheme='http://www.blogger.com/atom/ns#' term='Binding'/><title type='text'>Bind to many method simultaneously. Binding in WPF part 2.</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vmZ6fpkhezg/SWk-rHnYo3I/AAAAAAAABhY/HBvMcWiloks/s1600-h/title.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 155px; height: 185px;" src="http://4.bp.blogspot.com/_vmZ6fpkhezg/SWk-rHnYo3I/AAAAAAAABhY/HBvMcWiloks/s400/title.jpg" alt="" id="BLOGGER_PHOTO_ID_5289828147822895986" border="0" /&gt;&lt;/a&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt;Download source files - &lt;a href="http://snoopmyversion.googlecode.com/files/ArtfulBinding_src.zip"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt;Download binary files - &lt;a href="http://snoopmyversion.googlecode.com/files/ArtfulBinding_bin.zip"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Target:&lt;/span&gt;&lt;br /&gt;We have some views that have as source one shared collection. They are located in any &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.aspx"&gt;ItemsControl&lt;/a&gt;s (&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox.aspx"&gt;ListBox&lt;/a&gt;s in my case). Those views pass form different parametrized methods (we use the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.objectdataprovider.aspx"&gt;ObjectDataProvider&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/aa348824.aspx"&gt;bind to a method&lt;/a&gt; possibility for this purposes).  How can we implement one control element's property for affect on those views? We have restricts - it is needed to make in XAML code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Problem:&lt;/span&gt;&lt;br /&gt;How can we pass a value of control element as parameter in  &lt;a href="http://msdn.microsoft.com/en-us/library/aa348824.aspx"&gt;bind to a method&lt;/a&gt;s?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Solution:&lt;/span&gt;&lt;br /&gt;First of all we should declare some (I used "two", so I will write in next time "two" instead of "some") &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.objectdataprovider.aspx"&gt;ObjectDataProvider&lt;/a&gt; objects.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;ObjectDataProvider ObjectType="{x:Type local:CItems}"&lt;br /&gt;MethodName="GetMax" x:Key="max" &amp;gt;&lt;br /&gt;&amp;lt;ObjectDataProvider.MethodParameters&amp;gt;&lt;br /&gt;&amp;lt;system:Int32&amp;gt;3&amp;lt;/system:Int32&amp;gt;&lt;br /&gt;&amp;lt;/ObjectDataProvider.MethodParameters&amp;gt;&lt;br /&gt;&amp;lt;/ObjectDataProvider&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ObjectDataProvider ObjectType="{x:Type local:CItems}"&lt;br /&gt;MethodName="GetMin" x:Key="min" &amp;gt;&lt;br /&gt;&amp;lt;ObjectDataProvider.MethodParameters&amp;gt;&lt;br /&gt;&amp;lt;system:Int32&amp;gt;3&amp;lt;/system:Int32&amp;gt;&lt;br /&gt;&amp;lt;/ObjectDataProvider.MethodParameters&amp;gt;&lt;br /&gt;&amp;lt;/ObjectDataProvider&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Bind those objects to views:&lt;code&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ListBox ItemsSource="{Binding Source={StaticResource min}}" /&amp;gt;&lt;br /&gt;&amp;lt;ListBox ItemsSource="{Binding Source={StaticResource max}}" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Now we need to create a binding to control element's property that has affect to both those data provider. We use &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.aspx"&gt;MultiBinding&lt;/a&gt; with &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.aspx"&gt;Mode&lt;/a&gt; is set &lt;span class="selflink"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.bindingmode.aspx"&gt;OneWayToSource&lt;/a&gt; &lt;/span&gt;for this purpose. We should implement &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.converter.aspx"&gt;Converter&lt;/a&gt; of &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.aspx"&gt;MultiBinding&lt;/a&gt;. Since we set &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.aspx"&gt;Mode&lt;/a&gt; as &lt;span class="selflink"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.bindingmode.aspx"&gt;OneWayToSource&lt;/a&gt;&lt;/span&gt; we need only ConvertBack method:&lt;code&gt;&lt;br /&gt;&lt;br /&gt;public Object[] ConvertBack( Object value, Type[] targetTypes, Object parameter, CultureInfo culture )&lt;br /&gt; {&lt;br /&gt;  Int32 cnt = targetTypes.Length;&lt;br /&gt;  Object[] result = new Object[ cnt ];&lt;br /&gt;  String str = value.ToString();&lt;br /&gt;&lt;br /&gt;  if( !String.IsNullOrEmpty( str ) )&lt;br /&gt;  {&lt;br /&gt;   Int32 index = Int32.Parse( value.ToString() );&lt;br /&gt;&lt;br /&gt;   for( Int32 i = 0; i &amp;lt; cnt; ++i )&lt;br /&gt;   {&lt;br /&gt;    result[ i ] = index;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return result;&lt;br /&gt; }&lt;/code&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0); font-weight: bold;"&gt;Note:&lt;/span&gt; We should unbox value to &lt;a href="http://msdn.microsoft.com/en-us/library/system.int32.aspx"&gt;Int32&lt;/a&gt; other case value isn't correctly passed to method of data provider.&lt;br /&gt;&lt;br /&gt;Now we can easy implement this &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.aspx"&gt;MultiBinding&lt;/a&gt; our XAML code:&lt;code&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ComboBox.Text&amp;gt;&lt;br /&gt;&amp;lt;MultiBinding Mode="OneWayToSource" Converter="{StaticResource artfull}"&amp;gt;&lt;br /&gt;&amp;lt;Binding Source="{StaticResource max}"&lt;br /&gt;Path="MethodParameters[0]"&lt;br /&gt;BindsDirectlyToSource="true"&lt;br /&gt;UpdateSourceTrigger="PropertyChanged"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&amp;lt;Binding Source="{StaticResource min}"&lt;br /&gt;Path="MethodParameters[0]"&lt;br /&gt;BindsDirectlyToSource="true"&lt;br /&gt;UpdateSourceTrigger="PropertyChanged"&lt;br /&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/MultiBinding&amp;gt;&lt;br /&gt;&amp;lt;/ComboBox.Text&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Now when Text property of ComboBox is changed that views will be updated. Easy and nice :). If some details isn't clear - source and binary files were attached in the beginning of article.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-8169233217342510504?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/8169233217342510504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=8169233217342510504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8169233217342510504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8169233217342510504'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2009/01/bind-to-many-method-simultaneously.html' title='Bind to many method simultaneously. Binding in WPF part 2.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vmZ6fpkhezg/SWk-rHnYo3I/AAAAAAAABhY/HBvMcWiloks/s72-c/title.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-2058896384573021190</id><published>2008-12-06T16:15:00.000-08:00</published><updated>2008-12-07T06:18:20.037-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Template'/><category scheme='http://www.blogger.com/atom/ns#' term='GroupName'/><category scheme='http://www.blogger.com/atom/ns#' term='ToggleButton'/><category scheme='http://www.blogger.com/atom/ns#' term='ControlTemplate'/><title type='text'>Trips&amp;Ticks: Do you know how you can use GroupName property of RadioButton for ToggleButton in WPF?</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vmZ6fpkhezg/STsdWga0H2I/AAAAAAAABf8/tETPLyssd28/s1600-h/hamelion.jpg"&gt;&lt;img style="margin: 15pt 0pt 10px 10px; float: right; cursor: pointer; width: 229px; height: 183px;" src="http://4.bp.blogspot.com/_vmZ6fpkhezg/STsdWga0H2I/AAAAAAAABf8/tETPLyssd28/s400/hamelion.jpg" alt="" id="BLOGGER_PHOTO_ID_5276843660891397986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We can use &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.radiobutton.groupname%28VS.95%29.aspx"&gt;GroupName property&lt;/a&gt; for mutually exclusive &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.radiobutton%28VS.95%29.aspx"&gt;RadioButton&lt;/a&gt; but what can we  do if we want to use mutually exclusive &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.togglebutton.aspx"&gt;ToggleButton&lt;/a&gt;? &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.togglebutton.aspx"&gt;ToggleButton&lt;/a&gt; doesn't have like ability.  Please, do look in &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.radiobutton%28VS.95%29.aspx"&gt;RadioButton&lt;/a&gt;  what can you see? Exactly, &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.radiobutton%28VS.95%29.aspx"&gt;RadioButton&lt;/a&gt; is inherit from &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.togglebutton.aspx"&gt;ToggleButton&lt;/a&gt; so we can set in &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.control.template.aspx"&gt;Template&lt;/a&gt; property  &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.controltemplate.aspx"&gt;ControlTemplate&lt;/a&gt; of &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.togglebutton.aspx"&gt;ToggleButton&lt;/a&gt;. So our &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.radiobutton%28VS.95%29.aspx"&gt;RadioButton&lt;/a&gt;s will be look like &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.togglebutton.aspx"&gt;ToggleButtons&lt;/a&gt; besides will have  &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.radiobutton.groupname%28VS.95%29.aspx"&gt;GroupName property&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-2058896384573021190?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/2058896384573021190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=2058896384573021190' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2058896384573021190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2058896384573021190'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/12/trips-do-you-know-how-you-can-use.html' title='Trips&amp;Ticks: Do you know how you can use GroupName property of RadioButton for ToggleButton in WPF?'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vmZ6fpkhezg/STsdWga0H2I/AAAAAAAABf8/tETPLyssd28/s72-c/hamelion.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-7033538789678709164</id><published>2008-11-21T12:28:00.002-08:00</published><updated>2008-11-21T14:15:29.543-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AnonymousType'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='var'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Trips&amp;Ticks: Do you know how you can cast Object to AnonymousType?</title><content type='html'>I experimented with LINQ in my private project and question that was showed in title took me. I had next situation:&lt;br /&gt;&lt;br /&gt;I set list in one method:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;private void SetList()&lt;br /&gt;{&lt;br /&gt;SomeList.ItemsSource = ( from someTable in data.SomeTable&lt;br /&gt;   select new&lt;br /&gt;   {&lt;br /&gt;       &lt;/code&gt;&lt;code&gt;      &lt;/code&gt;&lt;code&gt;  &lt;/code&gt;&lt;code&gt;someTable.Id,&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;      &lt;/code&gt;&lt;code&gt;  &lt;/code&gt;&lt;code&gt;someTable.Name,&lt;br /&gt;&lt;/code&gt;&lt;code&gt;      &lt;/code&gt;&lt;code&gt;  &lt;/code&gt;&lt;code&gt;              Priority = someTable.Priority,&lt;br /&gt;&lt;/code&gt;&lt;code&gt;      &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;} );&lt;/code&gt;&lt;br /&gt;In other method I want retrieve Id of selected item. How can I do it? I have found interesting solution in &lt;a href="http://tomasp.net/blog/cannot-return-anonymous-type-from-method.aspx"&gt;blog of Tomas Petricek.&lt;/a&gt;&lt;br /&gt;&lt;code&gt;private Int32 GetID()&lt;br /&gt;{&lt;br /&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;Object selectedItem = DefectList.SelectedItem;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;if( null != selectedItem )&lt;br /&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   {&lt;br /&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;       var item = Utility.Cast( selectedItem, new&lt;br /&gt;   &lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;{&lt;br /&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;           Id = 0,&lt;br /&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;           Name = String.Empty,&lt;br /&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;           Priority = String.Empty,&lt;br /&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;           } );&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;           Int32 id = item.Id;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;}&lt;br /&gt;}&lt;br /&gt;public static T Cast&lt;t&gt;( object obj, T type )&lt;br /&gt;{&lt;br /&gt;   &lt;/t&gt;&lt;/code&gt;&lt;code&gt;   &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;t&gt;return (T)obj;&lt;br /&gt;}&lt;br /&gt;&lt;/t&gt;&lt;/code&gt;&lt;br /&gt;PS: As for me the best way is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;implement class with three like property.&lt;/li&gt;&lt;li&gt;create collection with items of this class.&lt;/li&gt;&lt;li&gt;set in ItemsSource new created collection.&lt;/li&gt;&lt;li&gt;now we can easy case Object to this class.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-7033538789678709164?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/7033538789678709164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=7033538789678709164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/7033538789678709164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/7033538789678709164'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/11/trips-do-you-know-how-you-can-cast.html' title='Trips&amp;Ticks: Do you know how you can cast Object to AnonymousType?'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-920953547646760157</id><published>2008-11-18T13:43:00.000-08:00</published><updated>2009-02-04T04:39:28.742-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Binding'/><title type='text'>Such different paths. Binding in WPF part 1.</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vmZ6fpkhezg/SSNAwykgqiI/AAAAAAAAA_g/OTXJZ59igX4/s1600-h/sampleScreen.gif"&gt;&lt;img style="margin: 45pt 0pt 10px 10px; float: right; cursor: pointer; width: 159px; height: 220px;" src="http://1.bp.blogspot.com/_vmZ6fpkhezg/SSNAwykgqiI/AAAAAAAAA_g/OTXJZ59igX4/s400/sampleScreen.gif" alt="" id="BLOGGER_PHOTO_ID_5270127195906419234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt;Download source files - &lt;a href="http://snoopmyversion.googlecode.com/files/BindingTest.zip"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We pleasure to using &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.binding.aspx"&gt;Binding&lt;/a&gt; in WPF. But all ways of using have we known? Only direct binds to dependency property like next code?&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;TextBlock Text="{Binding Path=Height, ElementName=myButton}"&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is poor. We can bind to property of value's property. How?&lt;br /&gt;Easy:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;TextBlock Text="{Binding Path=Background.(SolidColorBrush.Opacity), ElementName=myButton}"/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;TextBlock Text="{Binding Path=(Button.Content).(TextBlock.FontSize), ElementName=myButton}"/&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In attached sample I show how we can use this for EventTriggers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-920953547646760157?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/920953547646760157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=920953547646760157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/920953547646760157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/920953547646760157'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/11/binding-of-wpf-is-different-and-pretty.html' title='Such different paths. Binding in WPF part 1.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vmZ6fpkhezg/SSNAwykgqiI/AAAAAAAAA_g/OTXJZ59igX4/s72-c/sampleScreen.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-2914811784538735134</id><published>2008-10-22T07:41:00.000-07:00</published><updated>2009-03-10T09:49:57.125-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Uri'/><category scheme='http://www.blogger.com/atom/ns#' term='Relative Uri'/><title type='text'>Trips&amp;Ticks: Do you know how do you need to change properties of local file when it will be loaded, using a Relative Uri?</title><content type='html'>When I had tried to use Relative &lt;a href="http://msdn.microsoft.com/en-us/library/system.uri.aspx"&gt;URIs&lt;/a&gt; for local files I found next trouble - resource wasn't found in my app. Solution for this problem is next actions: we should open properties of local file and change flag named &lt;span style="color: rgb(0, 0, 153);"&gt;"Copy to Output Directory"&lt;/span&gt; from &lt;span style="font-style: italic;"&gt;"Do not Copy"&lt;/span&gt; to &lt;span style="font-style: italic;"&gt;"Copy always"&lt;/span&gt;.&lt;br /&gt;Easy and logically.&lt;br /&gt;&lt;br /&gt;PS: Nice article about URI in WPF - &lt;a href="http://msdn.microsoft.com/en-us/library/aa970069.aspx"&gt;Pack URIs in Windows Presentation Foundation&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-2914811784538735134?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/2914811784538735134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=2914811784538735134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2914811784538735134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2914811784538735134'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/10/trips-do-you-know-how-do-you-need-to.html' title='Trips&amp;Ticks: Do you know how do you need to change properties of local file when it will be loaded, using a Relative Uri?'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-5746253521836785908</id><published>2008-10-15T23:46:00.000-07:00</published><updated>2009-02-04T04:39:36.744-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='multiUI'/><category scheme='http://www.blogger.com/atom/ns#' term='Window'/><title type='text'>Really multiUI window in WPF project.</title><content type='html'>&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Download&lt;/span&gt;&lt;span style="font-style: italic;"&gt; bin&lt;/span&gt;&lt;span&gt;&lt;span style="font-style: italic;"&gt;ary file - &lt;a href="http://snoopmyversion.googlecode.com/files/MultiUIWindow_bin.zip"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Download source files - &lt;a href="http://snoopmyversion.googlecode.com/files/MultiUIWindow_src.zip"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Introduction&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;WPF presents new way to implement visual appearance of application. We can implement it in XAML and C# files both or separately. We use &lt;a href="http://msdn.microsoft.com/en-us/library/ms596995.aspx"&gt;Application.LoadComponent( Object, Uri ) &lt;/a&gt;method for load XAML files where "Uri" presents way to XAML file. So we can manipulate visual appearance presented in XAML's files load different XAML's files.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Note: &lt;/span&gt;We can't use &lt;/span&gt;&lt;a style="font-style: italic;" href="http://msdn.microsoft.com/en-us/library/aa970568.aspx"&gt;x:Class&lt;/a&gt;&lt;span style="font-style: italic;"&gt; attribute for root node in XAML's files. In this case compiler automatic generates C# code (in *.g.cs file) and those classes will be conflicted (more precisely - some automatic generated members will be conflicted). Thus we can't use x:Code and describe to events in XAML's files (code for support those actions were implemented in *.g.cs files).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt; Note:&lt;/span&gt; Class have been generated in XAML's file (more precisely - in *.g.cs) is normal class likes class have been generated in C# code and even we can inherit a custom class from it.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;My sample.&lt;/span&gt;&lt;br /&gt;My sample presents two mode for manager and worker that to show the personal's information. We load different XAML's files against of mode. First we show dialog window that propose to choose behaviour.&lt;br /&gt;&lt;br /&gt;Different XAML's contains different class instants for present data:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PeopleEx &lt;/span&gt;(People - for worker) - presents data of personnel (less for worker and more for manager).&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ManagerInfoPresenter &lt;/span&gt;(WorkerInfoPresenter - for worker) - get a information (different for other mode).&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ManagerCapacityShow &lt;/span&gt;(WorkerCapacityShow - for worker) - show a diagram. It is fake but it is different for other mode.&lt;br /&gt;&lt;br /&gt;We can implement different controls with one name in other XAML's files (for example "InformCheck" or  "CapacityShow"). We found those controls in XAML's files to use &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.findname.aspx"&gt;FindName(String)&lt;/a&gt; method and we can handle some events of this controls.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;    CheckBox informer = (CheckBox)FindName( INFORMCHECK_NAME );&lt;br /&gt;     informer.Checked += new RoutedEventHandler( OnInformerChecked );&lt;br /&gt;     informer.Unchecked += new RoutedEventHandler( OnInformerUnchecked );&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;We can apply to different class members to use base class (like m_CapacityShow member) or interface (like m_InfoPresenter member).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;    if( AppMode.Manager == appMode )&lt;br /&gt;      {&lt;br /&gt;         &lt;/code&gt;&lt;blockquote&gt;&lt;code&gt;...&lt;br /&gt;          m_InfoPresenter = new ManagerInfoPresenter();&lt;/code&gt;&lt;/blockquote&gt;&lt;code&gt;}&lt;br /&gt;      else&lt;br /&gt;      { &lt;/code&gt;&lt;blockquote&gt;&lt;code&gt;...&lt;br /&gt;          m_InfoPresenter = new WorkerInfoPresenter();&lt;/code&gt;&lt;/blockquote&gt;&lt;code&gt;}&lt;br /&gt;      ...&lt;br /&gt;      m_CapacityShow = (Image)FindName( CAPACITYSHOW_NAME );&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Summary&lt;/span&gt;&lt;br /&gt;We can really create one class window for two (or more) behaviour of application. We don't hide any controls or elements we don't load they! It is elegant way to dynamic create application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-5746253521836785908?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/5746253521836785908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=5746253521836785908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5746253521836785908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5746253521836785908'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/10/really-multiui-window-on-wpf-project.html' title='Really multiUI window in WPF project.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-3503945514312448751</id><published>2008-10-12T02:25:00.000-07:00</published><updated>2008-10-12T13:12:32.039-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Net.Framework 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='for'/><category scheme='http://www.blogger.com/atom/ns#' term='List(T)'/><category scheme='http://www.blogger.com/atom/ns#' term='ForEach method'/><title type='text'>Little deception of List.ForEach(Action action)</title><content type='html'>I use &lt;a href="http://msdn.microsoft.com/en-us/library/ttw7t8t6%28VS.80%29.aspx"&gt;foreach&lt;/a&gt; statement  really often. It is useful and more compact than &lt;a href="http://msdn.microsoft.com/en-us/library/ch45axte.aspx"&gt;for&lt;/a&gt;. (This way is fast in same case but in same case it is slowly for performance. But I want say not about that). &lt;a href="http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx"&gt;List&amp;lt;T&amp;gt; class&lt;/a&gt; has &lt;a href="http://msdn.microsoft.com/en-us/library/bwabdf9z.aspx#Mtps_DropDownFilterText"&gt;ForEach(Action&lt;t&gt; action) method&lt;/t&gt;&lt;/a&gt; I thought that its implementation (and behaviour) is like  &lt;a href="http://msdn.microsoft.com/en-us/library/ttw7t8t6%28VS.80%29.aspx"&gt;foreach&lt;/a&gt; statement (I make this conclusion, based on the name of method) but I was confused. I have looked to &lt;a href="http://www.red-gate.com/products/reflector/"&gt;Net. Reflector&lt;/a&gt; and saw next code:&lt;br /&gt;&lt;br /&gt;public static void ForEach&lt;t&gt;(T[] array, Action&lt;t&gt; action)&lt;br /&gt;{&lt;br /&gt;    if (array == null)&lt;br /&gt;    {&lt;br /&gt;        throw new ArgumentNullException("array");&lt;br /&gt;    }&lt;br /&gt;    if (action == null)&lt;br /&gt;    {&lt;br /&gt;        throw new ArgumentNullException("action");&lt;br /&gt;    }&lt;br /&gt;    for (int i = 0; i &lt; array.Length; i++)&lt;br /&gt;    {&lt;br /&gt;        action(array[i]);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;t&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bwabdf9z.aspx#Mtps_DropDownFilterText"&gt;ForEach(Action&lt;t&gt; action) method&lt;/t&gt;&lt;/a&gt; behaviour likes  &lt;a href="http://msdn.microsoft.com/en-us/library/ch45axte.aspx"&gt;for&lt;/a&gt; statement   behaviour. And &lt;t&gt;I can use it like &lt;/t&gt;  &lt;a href="http://msdn.microsoft.com/en-us/library/ch45axte.aspx"&gt;for&lt;/a&gt;. For example&lt;t&gt; I can change main collection during execution &lt;/t&gt;action &lt;t&gt;delegate.&lt;br /&gt;&lt;/t&gt;&lt;/t&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-3503945514312448751?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/3503945514312448751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=3503945514312448751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3503945514312448751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3503945514312448751'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/10/little-deception-of-list-foreachaction.html' title='Little deception of List&lt;T&gt;.ForEach(Action&lt;T&gt; action)'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-5465651570588904505</id><published>2008-07-30T14:46:00.000-07:00</published><updated>2008-12-10T00:23:12.595-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='visual debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='Template'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='Snoop'/><title type='text'>My version of Snoop (+ 2 features) of WPF</title><content type='html'>&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vmZ6fpkhezg/SSM2Qsj2ooI/AAAAAAAAA_Y/VBB1HaacJFQ/s1600-h/snoop.gif"&gt;&lt;img style="margin: 20pt 0pt 10px 10px; float: right; cursor: pointer; width: 209px; height: 145px;" src="http://2.bp.blogspot.com/_vmZ6fpkhezg/SSM2Qsj2ooI/AAAAAAAAA_Y/VBB1HaacJFQ/s400/snoop.gif" alt="" id="BLOGGER_PHOTO_ID_5270115649420960386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I think that every WPF developer knows that is &lt;a href="http://blois.us/Snoop/"&gt;Snoop.&lt;/a&gt;  This is helpful tool (with source code (!!) ) for visual debugging of WPF's app at runtime.  It is  good  but I was in need of  some expansions.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I needed to see &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.controltemplate.aspx"&gt;Template&lt;/a&gt; of controls in visual tree.&lt;/li&gt;&lt;li&gt;I needed to keep a/some couple (value and property) of control in visual tree.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;I implemented this issues for self purpose and want to impart this to all.&lt;br /&gt;&lt;br /&gt;At first. My coworker Ivan and ex-coworker &lt;a href="http://realnero.blogspot.com/"&gt;Eugene&lt;/a&gt;  implemented like issue. But their solution didn't satisfy me. It had low performance. I re-implement it and in my solution convert to xaml come true after click to "Show XAML!" button only. It increase performance in comparison with previous solutions.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vmZ6fpkhezg/SJD_APaynWI/AAAAAAAAAd0/lUpUE4TfCUo/s1600-h/p1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_vmZ6fpkhezg/SJD_APaynWI/AAAAAAAAAd0/lUpUE4TfCUo/s400/p1.jpg" alt="" id="BLOGGER_PHOTO_ID_5228959546981129570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For second feature I used code of &lt;a href="http://www.beacosta.com/blog/?p=53"&gt;Beatriz Costa&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;  that allows you to drag and drop items between data bound ItemsControls (I added a little modification for my purpose only). I added new PropertyGrid. We can drag a item from main PropertyGrid to keep PropertyGrid.&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vmZ6fpkhezg/SJD-LIvjwEI/AAAAAAAAAdg/NVLCHRRn59k/s1600-h/p15.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_vmZ6fpkhezg/SJD-LIvjwEI/AAAAAAAAAdg/NVLCHRRn59k/s400/p15.jpg" alt="" id="BLOGGER_PHOTO_ID_5228958634656120898" border="0" /&gt;&lt;/a&gt;In last PropertyGrid property  saves  relation with its owner even if it contains different owners of properties.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vmZ6fpkhezg/SJD-LYcr1pI/AAAAAAAAAdo/01CMqE1OCjs/s1600-h/p2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_vmZ6fpkhezg/SJD-LYcr1pI/AAAAAAAAAdo/01CMqE1OCjs/s400/p2.jpg" alt="" id="BLOGGER_PHOTO_ID_5228958638871926418" border="0" /&gt;&lt;/a&gt;&lt;a href="http://snoopmyversion.googlecode.com/files/Snoop.zip"&gt;Here&lt;/a&gt; you can find the project with this features built using VS2008.&lt;br /&gt;&lt;br /&gt;Enjoy ;)&lt;br /&gt;&lt;a href="http://www.beacosta.com/Zips/46DragDropListBox.zip"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-5465651570588904505?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/5465651570588904505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=5465651570588904505' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5465651570588904505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5465651570588904505'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/07/my-version-of-snoop-2-features.html' title='My version of Snoop (+ 2 features) of WPF'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vmZ6fpkhezg/SSM2Qsj2ooI/AAAAAAAAA_Y/VBB1HaacJFQ/s72-c/snoop.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-6474112949803011615</id><published>2008-06-05T13:30:00.000-07:00</published><updated>2008-12-10T00:23:12.776-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='ItemsSource'/><category scheme='http://www.blogger.com/atom/ns#' term='ItemControl'/><title type='text'>Correct use ItemsSource in WPF for controls inherited from ItemsControl</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vmZ6fpkhezg/SG4yOphiNiI/AAAAAAAAAPo/lujLqlncV5Y/s1600-h/reflector.gif"&gt;&lt;img style="margin: 0pt 30pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_vmZ6fpkhezg/SG4yOphiNiI/AAAAAAAAAPo/lujLqlncV5Y/s320/reflector.gif" alt="Use NET.Reflector" id="BLOGGER_PHOTO_ID_5219164245415048738" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;I sometimes read MSDN forums of WPF. I have founded post with &lt;a href="http://forums.msdn.microsoft.com/en-US/wpf/thread/14899c9d-966d-4328-a4ed-b94538738046/"&gt;interesting problem&lt;/a&gt;. I was interested this trouble.&lt;br /&gt;&lt;br /&gt;We can download sample from &lt;a href="http://msdn.microsoft.com/en-us/library/ms747048.aspx"&gt;there&lt;/a&gt;. Pay attention that ListView have  strange behavior: pressing "s" moves the focus to the next item. I was interested this problem and little investigate it. This action relations with search functionality. If we don't need search functionality we can easy fix it, override ToString() method:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;public override string ToString()&lt;br /&gt;{&lt;br /&gt;return string.Empty;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;FYI:&lt;br /&gt;If you need more details why does it do,  you can read next:&lt;br /&gt;&lt;br /&gt;After you type letter 's', next methods were called:&lt;br /&gt;...................&lt;br /&gt;- void OnTextInput( TextCompositionEventArgs e ) of ItemsControl;&lt;br /&gt;- bool DoSearch(string nextChar) of TextSearch;&lt;br /&gt;- int FindMatchingPrefix(ItemsControl itemsControl, string primaryTextPath, string prefix, string newChar, int startItemIndex, bool lookForFallbackMatchToo, ref bool wasNewCharUsed) of TextSearch;&lt;br /&gt;&lt;br /&gt;- string GetPrimaryText(object item, BindingExpression primaryTextBinding, DependencyObject primaryTextBindingHome) of TextSearch&lt;br /&gt;&lt;code&gt;private static string GetPrimaryText(object item, BindingExpression primaryTextBinding, DependencyObject primaryTextBindingHome)&lt;br /&gt;{&lt;br /&gt;//item is EmployeeInfo (!!)&lt;br /&gt;DependencyObject obj2 = item as DependencyObject;&lt;br /&gt;&lt;br /&gt;if (obj2 != null) // false&lt;br /&gt;{&lt;br /&gt;string str = (string) obj2.GetValue(TextProperty);&lt;br /&gt;if (!string.IsNullOrEmpty(str))&lt;br /&gt;{&lt;br /&gt;return str;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;if ((primaryTextBinding != null) &amp;amp;&amp;amp; (primaryTextBindingHome != null)) //false&lt;br /&gt;{&lt;br /&gt;primaryTextBinding.Activate(item);&lt;br /&gt;return ConvertToPlainText(primaryTextBinding.Value);&lt;br /&gt;}&lt;br /&gt;return ConvertToPlainText(item); //It was called&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;-string ConvertToPlainText(object o) of TextSearch&lt;br /&gt;&lt;code&gt;private static string ConvertToPlainText(object o)&lt;br /&gt;{&lt;br /&gt;FrameworkElement element = o as FrameworkElement;&lt;br /&gt;if (element != null) //false&lt;br /&gt;{&lt;br /&gt;string plainText = element.GetPlainText();&lt;br /&gt;if (plainText != null)&lt;br /&gt;{&lt;br /&gt;return plainText;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;if (o == null) // false&lt;br /&gt;{&lt;br /&gt;return string.Empty;&lt;br /&gt;}&lt;br /&gt;return o.ToString(); //return "SDKSample.EmployeeInfo"&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;- In this FindMatchingPrefix method we prepare this string as follows&lt;br /&gt;........................&lt;br /&gt;&lt;code&gt;string str2 = GetPrimaryText(obj3, bindingExpr, itemsControl);&lt;br /&gt;if ((str2 != null) &amp;amp;&amp;amp; str2.StartsWith(str, true, culture)) //"SDKSample.EmployeeInfo" is started with "s" ;) (!!!!!)&lt;br /&gt;{&lt;br /&gt;wasNewCharUsed = true;&lt;br /&gt;num = num4;&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;........................&lt;br /&gt;return num;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;- and in the DoSearch(string nextChar) method&lt;br /&gt;........................&lt;br /&gt;&lt;code&gt;int itemIndex = FindMatchingPrefix(this._attachedTo, primaryTextPath, this.Prefix, nextChar, startItemIndex, lookForFallbackMatchToo, ref wasNewCharUsed);&lt;br /&gt;&lt;br /&gt;if (itemIndex != -1)&lt;br /&gt;{&lt;br /&gt;if (!this.IsActive || (itemIndex != startItemIndex))&lt;br /&gt;{&lt;br /&gt;object item = items[itemIndex];&lt;br /&gt;&lt;br /&gt;this._attachedTo.NavigateToItem(item, itemIndex, new ItemsControl.ItemNavigateArgs(Keyboard.PrimaryDevice, ModifierKeys.None)); &lt;span style="color: rgb(255, 0, 0);"&gt;//wrong code is started&lt;/span&gt;&lt;br /&gt;this.MatchedItemIndex = itemIndex;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;........................&lt;br /&gt;&lt;br /&gt;Nothing is perfect..&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-6474112949803011615?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/6474112949803011615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=6474112949803011615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/6474112949803011615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/6474112949803011615'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/06/correct-use-itemssource-in-wpf-for.html' title='Correct use ItemsSource in WPF for controls inherited from ItemsControl'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vmZ6fpkhezg/SG4yOphiNiI/AAAAAAAAAPo/lujLqlncV5Y/s72-c/reflector.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-286707246902451319</id><published>2008-05-12T12:46:00.000-07:00</published><updated>2008-05-15T06:23:55.823-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='FocusManager'/><category scheme='http://www.blogger.com/atom/ns#' term='focus scope'/><category scheme='http://www.blogger.com/atom/ns#' term='Keyboard.Focus'/><title type='text'>Problem with focus scope in WPF.</title><content type='html'>WPF contains interesting static class &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.input.focusmanager.aspx"&gt;FocusManager&lt;/a&gt;. This class (more precisely: its static method &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.input.focusmanager.setisfocusscope.aspx"&gt;SetIsFocusScope&lt;/a&gt;) allows to set the specified DependencyObject as a focus scope (You can read more about it &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.input.focusmanager.setisfocusscope.aspx"&gt;here&lt;/a&gt;).&lt;br /&gt;But we have a limitation that didn't describe in MSDN (or more precisely, I not found). We can't use all controls that were inherited from &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.buttonbase.aspx"&gt;ButtonBase&lt;/a&gt; in this focus scope, as these controls can't capture &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.input.keyboard.focus%28VS.85%29.aspx"&gt;Keyboard.Focus&lt;/a&gt; in this focus scope. In OnLostMouseCapture method validates whether button is located in main window's focus scope. So if it isn't, control loses Keyboard.Focus (its be after Click event).&lt;br /&gt;From information from my &lt;a href="http://immortalratblog.blogspot.com/"&gt;co-worker&lt;/a&gt;, this behaviour will be added for buttons correct works in &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.toolbar.aspx"&gt;ToolBar&lt;/a&gt;.&lt;br /&gt;I think that a solution of MS could be more graceful for trouble of &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.toolbar.aspx"&gt;ToolBar&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-286707246902451319?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/286707246902451319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=286707246902451319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/286707246902451319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/286707246902451319'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/05/problem-with-focus-scope-in-wpf.html' title='Problem with focus scope in WPF.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-8982566220296013708</id><published>2008-05-05T13:39:00.000-07:00</published><updated>2008-05-05T21:57:17.071-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='RegisterAttached'/><category scheme='http://www.blogger.com/atom/ns#' term='Binding'/><category scheme='http://www.blogger.com/atom/ns#' term='Inherit'/><title type='text'>Inherit properties</title><content type='html'>&lt;span style="" lang="EN-US"&gt;When I investigated WPF feature, I was interesting how use &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.inherits.aspx"&gt;inherit &lt;/a&gt;property (If consider that &lt;a href="http://msdn.microsoft.com/en-us/library/ms752347.aspx"&gt;Binding&lt;/a&gt; is low performance feature). I used these properties as &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.dependencyproperty.registerattached.aspx"&gt;RegisterAttached&lt;/a&gt; only. I have write some test samples but these didn’t work to my of the confuse. Little search in &lt;a href="http://msdn.microsoft.com/en-us/default.aspx"&gt;MSDN&lt;/a&gt; founded the root of problem.&lt;span style=""&gt;  &lt;/span&gt;It locate in end of inherit property document, after eulogy powerful this feature.&lt;/span&gt;&lt;br /&gt;&lt;div class="alert"&gt;&lt;table width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th align="left"&gt;&lt;img class="note" title="Note" src="http://msdn.microsoft.com/en-us/library/ms753197.alert_note%28en-us,VS.90%29.gif" /&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; &lt;p&gt;Although property value inheritance might appear to work for nonattached dependency properties, the inheritance behavior for a nonattached property through certain element boundaries in the run-time tree is undefined. Always use &lt;a id="ctl00_rs1_mainContentContainer_ctl27" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe269480_c|ctl00_rs1_mainContentContainer_ctl27',this);" href="http://msdn.microsoft.com/en-us/library/system.windows.dependencyproperty.registerattached.aspx"&gt;RegisterAttached&lt;/a&gt; to register properties where you specify &lt;a id="ctl00_rs1_mainContentContainer_ctl28" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe269480_c|ctl00_rs1_mainContentContainer_ctl28',this);" href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.inherits.aspx"&gt;Inherits&lt;/a&gt; in the metadata.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;         &lt;a name="InheritanceContext"&gt;&lt;!----&gt;&lt;/a&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;So, this is no surprise that my samples didn’t work. You can read more &lt;a href="http://msdn.microsoft.com/en-us/library/ms753197.aspx#Property_Value_Inheritance_is_Containment_Inheritance"&gt;here&lt;/a&gt;.&lt;o:p&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/1801684018053244846-8982566220296013708?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/8982566220296013708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=8982566220296013708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8982566220296013708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8982566220296013708'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/05/inherit-properties.html' title='Inherit properties'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-36679384081881814</id><published>2008-04-16T05:09:00.000-07:00</published><updated>2008-04-16T05:13:01.445-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='xmlns'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Cider vs VS2008's builder. Just for fun</title><content type='html'>&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;I wrote little test sample with using WPF. I added a custom class (inherit from Button) in sample's namespace. I needed to add control in application. &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;Taking into account my previous work experience with the implement controls, I wrote like next &lt;span style="color: rgb(152, 72, 6);"&gt;xmlns:local="clr-namespace:WpfApplication1;assembly=WpfApplication1" &lt;/span&gt;, &lt;span style="color: rgb(148, 54, 52);"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;I confused.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;Project didn't build. It saw that couldn't find my custom class in adjusted XML namespace. In this case to my great surprise Cider parsed all correct and show Button in my case (my custom class was inherit from Button) even add correct a method for event handler.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;I miss when added full type describe of namespace. In this case I had to write next: &lt;span style="color: rgb(152, 72, 6);"&gt;xmlns:local="clr-namespace:WpfApplication1"&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;&lt;u&gt;Note: &lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt;"&gt;If namespace of application set to use XmlnsDefinition (for example: &lt;span style="color: rgb(152, 72, 6);"&gt;[assembly: XmlnsDefinition( "http://www.mySite.com", "WpfApplication1" )]&lt;/span&gt; in AssemblyInfo.cs) and accordingly we must to write &lt;span style="color: rgb(152, 72, 6);"&gt;xmlns:local="http://www.mySite.com"&lt;/span&gt; in app. This sample isn't built and Cider doesn't parse it. We should use like code in an external dll only.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-36679384081881814?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/36679384081881814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=36679384081881814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/36679384081881814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/36679384081881814'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/04/cider-vs-vs2008s-builder-just-for-fun.html' title='Cider vs VS2008&apos;s builder. Just for fun'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-5895309482584710896</id><published>2008-04-13T11:46:00.000-07:00</published><updated>2008-05-05T21:56:51.500-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='ObservableCollection'/><category scheme='http://www.blogger.com/atom/ns#' term='IEnumerable'/><category scheme='http://www.blogger.com/atom/ns#' term='ItemsSource'/><category scheme='http://www.blogger.com/atom/ns#' term='INotifyPropertyChanged'/><category scheme='http://www.blogger.com/atom/ns#' term='ItemControl'/><title type='text'>ItemsSource tips &amp; tricks</title><content type='html'>&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 176, 80);" lang="EN-US"&gt;Describe problem.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="EN-US"&gt;When we wish to implement the mechanism Drag&amp;amp;Drop of Children for our control in WPF, particularly that our control contains children in its logical tree (in other case attached and inherit properties work incorrect sometimes). Let that control template contains some other controls inherit from &lt;span style="color: rgb(0, 112, 192);"&gt;ItemControl&lt;/span&gt;. We wish add some children to this inherit from &lt;span style="color: rgb(0, 112, 192);"&gt;ItemControl&lt;/span&gt; controls. What can we do?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="EN-US"&gt;If we use &lt;span style="color: rgb(0, 112, 192);"&gt;Items&lt;/span&gt; that we have a disagreeable surprise - we should add items to logical tree of internal control (previous to remove from our control's logical tree - it is the problem described above). But we can create collection inherit of &lt;span style="color: rgb(0, 112, 192);"&gt;IEnumerable&lt;/span&gt; and it is bound to &lt;span style="color: rgb(0, 112, 192);"&gt;ItemsSource&lt;/span&gt; of internal controls - all will be worked nice.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(0, 176, 80);" lang="EN-US"&gt;Note:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="EN-US"&gt;If property &lt;span style="color: rgb(0, 112, 192);"&gt;ItemsSource&lt;/span&gt; isn't equal 'null' that we can work with Items in read-only mode. If &lt;span style="color: rgb(0, 112, 192);"&gt;ItemsSource&lt;/span&gt; equal 'null' that we can full use Items (It is empty after those actions). If we need dynamic change of items we can implement &lt;span style="color: rgb(0, 112, 192);"&gt;INotifyPropertyChanged&lt;/span&gt; interface. The better solution is to use &lt;span style="color: rgb(0, 112, 192);"&gt;ObservableCollection&lt;/span&gt; for this purpose.&lt;o:p&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/1801684018053244846-5895309482584710896?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/5895309482584710896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=5895309482584710896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5895309482584710896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/5895309482584710896'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/04/itemssource-tips-tricks.html' title='ItemsSource tips &amp; tricks'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-3334646623619997291</id><published>2008-04-08T14:52:00.000-07:00</published><updated>2008-04-09T00:21:05.345-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deployment SVN'/><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>Deployment SVN (Subversion) for Windows as Home Version Control System.</title><content type='html'>&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 21.3pt;"&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;I need to use Version Control System in home. It is have requirement: should be free and for Windows XP. I selected the &lt;b style=""&gt;SVN&lt;/b&gt; (&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;&lt;a href="http://subversion.tigris.org/"&gt;http://subversion.tigris.org/&lt;/a&gt;&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;) version at 1.4.8.12137 (It’s latest in this moment).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 21.3pt;"&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;After installation in &lt;span style="color: rgb(141, 179, 226);"&gt;InstalataionFolder&lt;/span&gt; (default: “C:\Program Files\Subversion” you can select another) you should added repository folder and start server of SVN.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 21.3pt;"&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;You can register repository folder to use &lt;/span&gt;&lt;b style=""&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;svnadmin&lt;/span&gt;&lt;/b&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;. First off all you should create repository folder – &lt;span style="color: rgb(141, 179, 226);"&gt;RepositoryFolder&lt;/span&gt; (I used “&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;D:\&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;Programming&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;\svn&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;”)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 21.3pt;"&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;You do start command window (cmd.exe) in InstalataionFolder\bin and do type next command: &lt;i style=""&gt;&lt;span style="color: rgb(0, 176, 80);"&gt;svnadmin&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%; color: rgb(0, 176, 80);font-size:14;" lang="EN-US" &gt; &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%; color: rgb(0, 176, 80);font-size:14;" lang="EN-US" &gt;create&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%; color: rgb(0, 176, 80);font-size:14;" &gt; "&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%; color: rgb(0, 176, 80);font-size:14;" &gt;&lt;span lang="EN-US"&gt;RepositoryFolder&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%; color: rgb(0, 176, 80);font-size:14;" &gt;"&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%;font-size:14;" &gt; &lt;/span&gt;&lt;/i&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;(for example in my case: &lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;svnadmin create "&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;D:\&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;Programming&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;\svn"&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 21.3pt;"&gt;&lt;u&gt;&lt;span style="line-height: 115%; color: rgb(148, 54, 52);font-size:14;" lang="EN-US" &gt;Note:&lt;/span&gt;&lt;/u&gt;&lt;span style="line-height: 115%; color: rgb(148, 54, 52);font-size:14;" lang="EN-US" &gt; Pay attention, we use some slash of Windows (“\”).&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 21.3pt;"&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;Now you should create service for automatic start the svn server. We use “sc.exe” for this target. “sc.exe” is located in system folder (It’s “&lt;i style=""&gt;C&lt;/i&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;:\&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;Windows\Sytstem32&lt;/span&gt;&lt;/i&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;” in my PC). Create service: &lt;/span&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%; color: rgb(0, 176, 80);font-size:14;" &gt;sc create svn binpath= "&lt;/span&gt;&lt;/i&gt;&lt;span style="line-height: 115%; color: rgb(0, 176, 80);font-size:14;" &gt;&lt;span lang="EN-US"&gt;InstalataionFolder&lt;/span&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%; color: rgb(0, 176, 80);font-size:14;" &gt;\bin\svnserve --service -r &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%; color: rgb(0, 176, 80);font-size:14;" lang="EN-US" &gt;&lt;br /&gt;"RepositoryFolder&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style="line-height: 115%; color: rgb(0, 176, 80);font-size:14;" &gt;" displayname= "SVN Server" depend= Tcpip start= auto&lt;/span&gt;&lt;/i&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 21.3pt;"&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;(In my case “&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;sc create svn binpath= "&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;C&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;:\Program Files\Subversion\bin\svnserve --service -r "D:\&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;Programming&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;\svn" displayname= "SVN Server" depend= Tcpip start= auto&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;”).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 21.3pt;"&gt;&lt;u&gt;&lt;span style="line-height: 115%; color: rgb(148, 54, 52);font-size:14;" lang="EN-US" &gt;Note:&lt;/span&gt;&lt;/u&gt;&lt;span style="line-height: 115%; color: rgb(148, 54, 52);font-size:14;" lang="EN-US" &gt; Pay attention, we use two symbols of minuses before “&lt;/span&gt;&lt;span style="line-height: 115%; color: rgb(148, 54, 52);font-size:14;" &gt;service&lt;/span&gt;&lt;span style="line-height: 115%; color: rgb(148, 54, 52);font-size:14;" lang="EN-US" &gt;” and set space after each equals sign. &lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify; text-indent: 21.3pt;"&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;After we should uncomment “&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;password-db = passwd&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;” section in configure file – RepositoryFolder\&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;conf\svnserve.conf&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt; (&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;D:\&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;Programming\&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;conf\svnserve.conf&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt; &lt;span lang="EN-US"&gt;in my case) and configure access to svn. We uncomment “auth-access” and uncomment and change value to “none” for “anon-access” (I deny anonymous access to svn).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 21.3pt;"&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;You should create pair login-password in section &lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;[users]&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt; of file “RepositoryFolder\&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;conf\passwd&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;” (&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;D:\&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;Programming\&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;conf\passwd&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt; &lt;span lang="EN-US"&gt;in my case)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 21.3pt;"&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;Now, you can start “&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;SVN Server&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;” service (Press Win+R and type in Run window the “services.msc” and start “&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" &gt;SVN Server&lt;/span&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;” or other with name that you have set).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-indent: 21.3pt;"&gt;&lt;span style="line-height: 115%;font-size:14;" lang="EN-US" &gt;And the end of article, I use a TortoiseSVN (&lt;a href="http://tortoisesvn.tigris.org/"&gt;http://tortoisesvn.tigris.org&lt;/a&gt;/) as client.&lt;o:p&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/1801684018053244846-3334646623619997291?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/3334646623619997291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=3334646623619997291' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3334646623619997291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3334646623619997291'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2008/04/deployment-svn-subversion-for-windows.html' title='Deployment SVN (Subversion) for Windows as Home Version Control System.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-3357051586762291939</id><published>2007-09-03T22:44:00.000-07:00</published><updated>2008-05-05T13:49:18.252-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Template'/><category scheme='http://www.blogger.com/atom/ns#' term='DataTemplateSelector'/><title type='text'>Correct use DataTemplateSelector.</title><content type='html'>In the many inherited from &lt;span style="font-weight: bold;"&gt;FrameworkElement &lt;/span&gt;in WPF contain a useful dependency property *TemplateSelector type of &lt;span style="font-weight: bold;"&gt;DataTemplateSelector&lt;/span&gt;. It can set our inherit from &lt;span style="font-weight: bold;"&gt;DataTemplateSelector&lt;/span&gt; class and override the method &lt;span style="font-style: italic;"&gt;SelectTemplate()&lt;/span&gt;. This allow dynamic generate template for a content. Content-data we can get a elementary binding. And now feature: we can use all binding  (even that what refet to &lt;span style="font-style: italic;"&gt;ElementName&lt;/span&gt;), except TemplateBinding, therefore RelativSourceMode doesn't equal TemplatedParent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-3357051586762291939?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/3357051586762291939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=3357051586762291939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3357051586762291939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/3357051586762291939'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2007/09/correct-use-datatemplateselector.html' title='Correct use DataTemplateSelector.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-2159785894039409728</id><published>2007-07-25T06:07:00.000-07:00</published><updated>2008-12-10T00:23:13.016-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadget'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='sidebar'/><title type='text'>My Vista sidebar gadget :)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vmZ6fpkhezg/SG224yuMe6I/AAAAAAAAAOA/yAunVkBrtuI/s1600-h/iTV-Watcher_1.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_vmZ6fpkhezg/SG224yuMe6I/AAAAAAAAAOA/yAunVkBrtuI/s320/iTV-Watcher_1.png" alt="" id="BLOGGER_PHOTO_ID_5219028629996731298" border="0" /&gt;&lt;/a&gt;I create Vista sidebar gadget for UA gadget competitions. It was adds to follow page &lt;a href="http://www.softpedia.com/get/Windows-Widgets/Video-Widget/iTV-Watcher.shtml"&gt;iTV Watcher.&lt;/a&gt;&lt;br /&gt;I had wanted to use SilverLight 1.0 (version 2.0 wasn't accessible in this time) for this purpose but I can't overcome a problem with event if to use Silverlight in sidebar of Vista. So I must was to use a simple JavaScript (It was missed some WPF-like animations feature, but it work correct).&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-2159785894039409728?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/2159785894039409728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=2159785894039409728' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2159785894039409728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2159785894039409728'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2007/07/windows-live-gallery.html' title='My Vista sidebar gadget :)'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vmZ6fpkhezg/SG224yuMe6I/AAAAAAAAAOA/yAunVkBrtuI/s72-c/iTV-Watcher_1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-8625834832015678202</id><published>2007-07-25T03:14:00.000-07:00</published><updated>2008-05-06T04:14:03.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Brush'/><title type='text'>"Cruel" colors substitution.</title><content type='html'>Sometime we need custom one or more brush of control in WPF. If template is not available and in base template used system brush, we can use this workaround (example for ListBox):&lt;br /&gt;&lt;blockquote&gt;&amp;lt;ListBox&amp;gt;&lt;br /&gt;&amp;lt;ListBox.Resources&amp;gt;&lt;br /&gt;&amp;lt;SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Maroon" /&amp;gt;&lt;br /&gt;&amp;lt;SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Maroon" /&amp;gt;&lt;br /&gt;&amp;lt;SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White" /&amp;gt;&lt;br /&gt;&amp;lt;SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="White" /&amp;gt;&lt;br /&gt;&amp;lt;/ListBox.Resources&amp;gt;&lt;br /&gt;&amp;lt;ListBoxItem&amp;gt;blah-blah&amp;lt;/ListBoxItem&amp;gt;&lt;br /&gt;&amp;lt;ListBoxItem&amp;gt;blah-blah&amp;lt;/ListBoxItem&amp;gt;&lt;br /&gt;&amp;lt;ListBoxItem&amp;gt;blah-blah&amp;lt;/ListBoxItem&amp;gt;&lt;br /&gt;&amp;lt;/ListBox&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-8625834832015678202?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/8625834832015678202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=8625834832015678202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8625834832015678202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8625834832015678202'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2007/07/cruel-colors-substitution.html' title='&quot;Cruel&quot; colors substitution.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-1261690143216504931</id><published>2007-07-25T01:59:00.001-07:00</published><updated>2008-05-05T13:50:22.067-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Template'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Style'/><category scheme='http://www.blogger.com/atom/ns#' term='Style'/><title type='text'>Custom style for a class which is inherited from the class of Selector</title><content type='html'>We need set own custom style or template for item of control which was inheritance from abstract class 'Selector' (for example: ComboBox, ListBox, TabControl) in WPF.&lt;br /&gt;We can use two way:&lt;br /&gt;1) We can add in control's resource some style and template. But it isn't good way, because these styles and templates have access only in boundary of control.&lt;br /&gt;2) We can use inheritance from Selector ItemContainerStyle dependency property and set in it new style value.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-1261690143216504931?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/1261690143216504931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=1261690143216504931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/1261690143216504931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/1261690143216504931'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2007/07/custom-style-for-class-which-is.html' title='Custom style for a class which is inherited from the class of Selector'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-2052229554256269671</id><published>2007-07-25T01:38:00.000-07:00</published><updated>2008-05-05T13:50:46.197-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='MultiDataTrigger'/><title type='text'>Correct works of MultiDataTrigger.</title><content type='html'>Sometimes we will be use a few MultiDataTrigger in WPF and them contain one identical binding. As practice shows better way is write identical binding to last in the list of condition, in other case MultiDataTrigger works not always. For the other types of MultiTriggers the it was unchecked, although scarcely it isn't identical..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-2052229554256269671?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/2052229554256269671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=2052229554256269671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2052229554256269671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/2052229554256269671'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2007/07/correct-works-of-multidatatrigger_25.html' title='Correct works of MultiDataTrigger.'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1801684018053244846.post-8143206491560698505</id><published>2007-07-24T23:27:00.000-07:00</published><updated>2008-12-10T00:23:13.159-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='avatar'/><title type='text'>Add my avatar...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vmZ6fpkhezg/RqcL5cy_gOI/AAAAAAAAAA4/CQuqTP6aXrE/s1600-h/RC.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_vmZ6fpkhezg/RqcL5cy_gOI/AAAAAAAAAA4/CQuqTP6aXrE/s320/RC.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5091050985376153826" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1801684018053244846-8143206491560698505?l=rredcat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rredcat.blogspot.com/feeds/8143206491560698505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1801684018053244846&amp;postID=8143206491560698505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8143206491560698505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1801684018053244846/posts/default/8143206491560698505'/><link rel='alternate' type='text/html' href='http://rredcat.blogspot.com/2007/07/correct-works-of-multidatatrigger.html' title='Add my avatar...'/><author><name>Rred Cat</name><uri>https://profiles.google.com/114627394334426542253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-OLnJ-m4Gnlg/AAAAAAAAAAI/AAAAAAAAAAA/Ej73x-JPgok/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vmZ6fpkhezg/RqcL5cy_gOI/AAAAAAAAAA4/CQuqTP6aXrE/s72-c/RC.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
