<?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-4823629086439924282</id><updated>2011-07-30T19:34:00.254-07:00</updated><category term='BlockUIContainer'/><category term='Autoincrement version'/><category term='AssemblyInfo'/><category term='Grid'/><category term='Xaml'/><category term='build number'/><category term='Border'/><category term='Table'/><category term='WPF'/><category term='Image'/><category term='focus'/><category term='FlowDocument'/><title type='text'>WPF Snippets and Hacks</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4823629086439924282.post-8766620005079801587</id><published>2010-09-26T13:19:00.000-07:00</published><updated>2010-09-26T13:21:41.759-07:00</updated><title type='text'>Border with exact 1 pixel width or height regardless of the screen DPI</title><content type='html'>Sometimes it is required to make border size exact of 1 screen pixel width or height in WPF.&lt;br /&gt;&lt;br /&gt;In usual 96 DPI environment is is pretty simple, just specify "&lt;i&gt;SpansToDevicePixels&lt;/i&gt;" property to "&lt;i&gt;True&lt;/i&gt;":&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt; &lt;span class="attr"&gt;SnapsToDevicePixels&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="Gray"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;However, if the DPI is different, you may receive unexpected results. &lt;br /&gt;If the &lt;i&gt;DPI &lt; 96&lt;/i&gt;, the line may not be visible at all, and if &lt;i&gt;DPI &gt; 96&lt;/i&gt;, two lines may appear sometimes instead of one.&lt;br /&gt;&lt;br /&gt;To fix this, you need to specify height of the border in device independent pixel to exact match screen pixel. E.g for the DPI = 125, the Height should be 0.8.&lt;br /&gt;&lt;br /&gt;To achieve this I create a special class PixelBorder and override MeasureOverride method:&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; PixelBorder: Border&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; Size MeasureOverride(Size constraint)&lt;br /&gt;    {&lt;br /&gt;        PresentationSource presentationSource = PresentationSource.FromVisual(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Size(&lt;br /&gt;               presentationSource.CompositionTarget.TransformFromDevice.M11, &lt;br /&gt;               presentationSource.CompositionTarget.TransformFromDevice.M22);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And use it where needed:&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;local:PixelSeparator&lt;/span&gt; &lt;span class="attr"&gt;SnapsToDevicePixels&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="#AAAAAA"&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="4"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;This border will be stretched horizontally or vertically depending on parent panel.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4823629086439924282-8766620005079801587?l=wpfhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/8766620005079801587/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4823629086439924282&amp;postID=8766620005079801587' title='0 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/8766620005079801587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/8766620005079801587'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/2010/09/border-in-wpf-with-exact-1-pixel-height.html' title='Border with exact 1 pixel width or height regardless of the screen DPI'/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4823629086439924282.post-3123721016670991959</id><published>2010-04-08T13:11:00.000-07:00</published><updated>2010-04-08T13:42:36.892-07:00</updated><title type='text'>Blurry Images in WPF and how to make them sharp</title><content type='html'>If you tried to insert image in the WPF, you may be disappointed to see that the sharpness of image is not constant.&lt;br /&gt;&lt;br /&gt;For example, let's create a simple window and put an image on it.&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt; &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="301"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="251"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt; &lt;span class="attr"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;="Horizontal"&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;      &lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Image&lt;/span&gt; &lt;span class="attr"&gt;Stretch&lt;/span&gt;&lt;span class="kwrd"&gt;="None"&lt;/span&gt; &lt;span class="attr"&gt;Source&lt;/span&gt;&lt;span class="kwrd"&gt;="ActivityMonitor.png"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://fedir.com/wpfhacks/blurryimage.png"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 354px; height: 292px;" src="http://fedir.com/wpfhacks/blurryimage.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You may be surprised to see that an image you just inserted is displayed not as you expected, instead it is blurry:&lt;br /&gt;&lt;br /&gt;This happens because the image is displayed in the center of a window. If you resize the window - the image may become sharp and then blur again. &lt;br /&gt;&lt;br /&gt;WPF uses device independent pixel coordinates in double format. And it is not a problem in WPF to draw the image in the non-integer coordinates, say, X: 22,5 and Y: 45,5.&lt;br /&gt;&lt;br /&gt;To correct this, you need to add the following to the Image tag:&lt;br /&gt;&lt;b&gt;BitmapScalingMode="NearestNeighbor"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Full code will look like this:&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt; &lt;span class="attr"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;="Shapr Image"&lt;/span&gt;&lt;br /&gt;  &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="301"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="251"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt; &lt;span class="attr"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;="Horizontal"&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;      &lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Image&lt;/span&gt; &lt;span class="attr"&gt;Stretch&lt;/span&gt;&lt;span class="kwrd"&gt;="None"&lt;/span&gt; &lt;span class="attr"&gt;Source&lt;/span&gt;&lt;span class="kwrd"&gt;="ActivityMonitor.png"&lt;/span&gt; &lt;span class="attr"&gt;RenderOptions&lt;/span&gt;.&lt;span class="attr"&gt;BitmapScalingMode&lt;/span&gt;&lt;span class="kwrd"&gt;="NearestNeighbor"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;Now the image looks much better:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://fedir.com/wpfhacks/sharpimage.png"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 354px; height: 292px;" src="http://fedir.com/wpfhacks/sharpimage.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4823629086439924282-3123721016670991959?l=wpfhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/3123721016670991959/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4823629086439924282&amp;postID=3123721016670991959' title='29 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/3123721016670991959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/3123721016670991959'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/2010/04/blurry-images-in-wpf-and-how-to-make.html' title='Blurry Images in WPF and how to make them sharp'/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4823629086439924282.post-1099048003645680169</id><published>2009-12-23T12:53:00.001-08:00</published><updated>2009-12-23T12:53:54.134-08:00</updated><title type='text'></title><content type='html'>Great article on AppDomain:&lt;br /&gt;http://blog.lab49.com/archives/2355&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4823629086439924282-1099048003645680169?l=wpfhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/1099048003645680169/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4823629086439924282&amp;postID=1099048003645680169' title='0 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/1099048003645680169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/1099048003645680169'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/2009/12/great-article-on-appdomain-httpblog.html' title=''/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4823629086439924282.post-6315792068524784719</id><published>2009-10-15T09:59:00.000-07:00</published><updated>2009-10-15T10:04:47.687-07:00</updated><title type='text'>UV Outliner 1.3 is out</title><content type='html'>Finally, my tiny WPF project is released. It is &lt;a href="http://uvoutliner.com"&gt;UV Outliner.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am a big fan of outliners.&lt;br /&gt;&lt;br /&gt;It is astonishing what amount of information in our everyday life has a hierarchical nature.&lt;br /&gt;I always wanted to be able to play with such information. Plans for life or for the day, travel information, meeting schedules, business plans, novels, or even blog posts are all examples of hierarchical information.&lt;br /&gt;&lt;br /&gt;So I decided to share the results of my work with other people like me.&lt;br /&gt;&lt;br /&gt;I hope UV Outliner will become a part of your life and will help you to be more productive.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://uvoutliner.com"&gt;http://uvoutliner.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4823629086439924282-6315792068524784719?l=wpfhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/6315792068524784719/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4823629086439924282&amp;postID=6315792068524784719' title='1 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/6315792068524784719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/6315792068524784719'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/2009/10/uv-outliner-13-is-out.html' title='UV Outliner 1.3 is out'/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4823629086439924282.post-4120835976603343907</id><published>2009-06-13T03:53:00.000-07:00</published><updated>2009-06-13T04:30:44.490-07:00</updated><title type='text'>Correct way to keep selection in TextBox and RichTextBox visible after focus lost in WPF</title><content type='html'>WPF controls: TextBox and RichTextBox have no HideSelection property. Due to this, it is a bit tricky to make them to show selection after focus lost.&lt;br /&gt;&lt;br /&gt;There are two possible solutions.&lt;br /&gt;&lt;br /&gt;1. Defining separate focus scope in XAML&lt;br /&gt;2. Adding and event handler (LostFocus) and set Handled property of RoutedEventArgs to true in code.&lt;br /&gt;&lt;br /&gt;As the second one seems to be tricky, I will show how to implement this behavior with the first concept:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;font size="2" face="Courier New" color="black"&gt;&lt;font color="#0000ff"&gt;&amp;#60;&lt;/font&gt;&lt;font color="#800000"&gt;Window&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&lt;font color="#ff0000"&gt;xmlns&lt;/font&gt;&lt;font color="#0000ff"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&lt;font color="#ff0000"&gt;xmlns:x&lt;/font&gt;&lt;font color="#0000ff"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;&lt;br /&gt; &lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;#60;&lt;/font&gt;&lt;font color="#800000"&gt;StackPanel&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;&lt;br /&gt; &lt;font color="#0000ff"&gt;&amp;#60;&lt;/font&gt;&lt;font color="#800000"&gt;TextBox&lt;/font&gt; &lt;font color="#ff0000"&gt;Margin&lt;/font&gt;&lt;font color="#0000ff"&gt;="5"&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;Some text here&lt;font color="#0000ff"&gt;&amp;#60;/&lt;/font&gt;&lt;font color="#800000"&gt;TextBox&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;&lt;br /&gt; &lt;br /&gt; &lt;font color="#0000ff"&gt;&amp;#60;&lt;/font&gt;&lt;font color="#800000"&gt;StackPanel&lt;/font&gt; &lt;font color="#ff0000"&gt;Grid&lt;/font&gt;.&lt;font color="#ff0000"&gt;Row&lt;/font&gt;&lt;font color="#0000ff"&gt;="1"&lt;/font&gt; &lt;font color="#ff0000"&gt;FocusManager&lt;/font&gt;.&lt;font color="#ff0000"&gt;IsFocusScope&lt;/font&gt;&lt;font color="#0000ff"&gt;="True"&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;&lt;br /&gt;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;#60;&lt;/font&gt;&lt;font color="#800000"&gt;ComboBox&lt;/font&gt; &lt;font color="#ff0000"&gt;Margin&lt;/font&gt;&lt;font color="#0000ff"&gt;="5"&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;&amp;#60;&lt;/font&gt;&lt;font color="#800000"&gt;ComboBoxItem&lt;/font&gt; &lt;font color="#ff0000"&gt;IsSelected&lt;/font&gt;&lt;font color="#0000ff"&gt;="True"&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;123&lt;font color="#0000ff"&gt;&amp;#60;/&lt;/font&gt;&lt;font color="#800000"&gt;ComboBoxItem&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;&amp;#60;&lt;/font&gt;&lt;font color="#800000"&gt;ComboBoxItem&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;123&lt;font color="#0000ff"&gt;&amp;#60;/&lt;/font&gt;&lt;font color="#800000"&gt;ComboBoxItem&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;&lt;br /&gt;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;#60;/&lt;/font&gt;&lt;font color="#800000"&gt;ComboBox&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;&lt;br /&gt; &lt;font color="#0000ff"&gt;&amp;#60;/&lt;/font&gt;&lt;font color="#800000"&gt;StackPanel&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;#60;/&lt;/font&gt;&lt;font color="#800000"&gt;StackPanel&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;#60;/&lt;/font&gt;&lt;font color="#800000"&gt;Window&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;#62;&lt;/font&gt;&lt;/font&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;This code will create window with two controls (TextBox and ComboBox):&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 325px; height: 196px;" src="http://2.bp.blogspot.com/_gzSnu7NwqJE/SjOJqyApbDI/AAAAAAAAAWI/SbY_65IbrTk/s400/focusscope.png" alt="" id="BLOGGER_PHOTO_ID_5346768550690909234" border="0" /&gt;As you can see, both controls can have focus simultaneously.  This happens because of the &lt;span style="font-family:courier new;"&gt;FocusManager.IsFocusScope&lt;/span&gt; property set to &lt;span style="font-family:courier new;"&gt;true&lt;/span&gt; which makes second control to be in a separate focus scope.&lt;br /&gt;&lt;br /&gt;However, if new window is opened, focus on both controls will be lost.&lt;br /&gt;&lt;br /&gt;You can read more about focus management in WPF here:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa969768.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa969768.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4823629086439924282-4120835976603343907?l=wpfhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/4120835976603343907/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4823629086439924282&amp;postID=4120835976603343907' title='0 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/4120835976603343907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/4120835976603343907'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/2009/06/correct-way-keep-selection-in-textbox.html' title='Correct way to keep selection in TextBox and RichTextBox visible after focus lost in WPF'/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gzSnu7NwqJE/SjOJqyApbDI/AAAAAAAAAWI/SbY_65IbrTk/s72-c/focusscope.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4823629086439924282.post-5662610869331749010</id><published>2009-02-11T06:03:00.000-08:00</published><updated>2009-02-13T14:03:37.352-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='FlowDocument'/><category scheme='http://www.blogger.com/atom/ns#' term='BlockUIContainer'/><category scheme='http://www.blogger.com/atom/ns#' term='Image'/><title type='text'>How to insert image into FlowDocument at runtime</title><content type='html'>To insert image into FlowDocument at runtime you can use the following code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;font size="2" face="Courier New" color="black"&gt;&lt;font color="#2B91AF"&gt;FlowDocument&lt;/font&gt; document = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2B91AF"&gt;FlowDocument&lt;/font&gt;();&lt;br /&gt;&lt;font color="#2B91AF"&gt;Image&lt;/font&gt; image = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2B91AF"&gt;Image&lt;/font&gt;();&lt;br /&gt;&lt;font color="#2B91AF"&gt;BitmapImage&lt;/font&gt; bimg = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2B91AF"&gt;BitmapImage&lt;/font&gt;();&lt;br /&gt;bimg.BeginInit();&lt;br /&gt;bimg.UriSource = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2B91AF"&gt;Uri&lt;/font&gt;(&lt;font color="#A31515"&gt;"c:\temp\image.png"&lt;/font&gt;, &lt;font color="#2B91AF"&gt;UriKind&lt;/font&gt;.Absolute);&lt;br /&gt;bimg.EndInit();&lt;br /&gt;image.Source = bimg;&lt;br /&gt;document.Blocks.Add(&lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2B91AF"&gt;BlockUIContainer&lt;/font&gt;(image));&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4823629086439924282-5662610869331749010?l=wpfhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/5662610869331749010/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4823629086439924282&amp;postID=5662610869331749010' title='0 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/5662610869331749010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/5662610869331749010'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/2009/02/how-to-insert-image-into-flowdocument.html' title='How to insert image into FlowDocument at runtime'/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4823629086439924282.post-8237370975548691275</id><published>2008-11-07T03:40:00.000-08:00</published><updated>2008-11-07T03:45:32.555-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='focus'/><title type='text'>How to set initial focus to specific WPF control in XAML</title><content type='html'>Setting initial focused control in WPF is easy. Just use the FocusManager.FocusedElement attached property: &lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt; &lt;span class="attr"&gt;FocusManager&lt;/span&gt;.&lt;span class="attr"&gt;FocusedElement&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding ElementName=MyEdit}"&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="MyEdit"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4823629086439924282-8237370975548691275?l=wpfhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/8237370975548691275/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4823629086439924282&amp;postID=8237370975548691275' title='0 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/8237370975548691275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/8237370975548691275'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/2008/11/how-to-set-focus-to-specific-wpf.html' title='How to set initial focus to specific WPF control in XAML'/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4823629086439924282.post-2086674876772003695</id><published>2008-10-24T03:23:00.000-07:00</published><updated>2009-06-13T04:35:49.433-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='build number'/><category scheme='http://www.blogger.com/atom/ns#' term='AssemblyInfo'/><category scheme='http://www.blogger.com/atom/ns#' term='Autoincrement version'/><title type='text'>Auto-incremented version in AssemblyInfo</title><content type='html'>Visual Studio 2008 can increment build version for you. Just specify "*" in the AssemblyInfo.cs.  For example:&lt;br /&gt;&lt;br /&gt;[assembly: AssemblyVersion("1.0.0.*")]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4823629086439924282-2086674876772003695?l=wpfhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/2086674876772003695/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4823629086439924282&amp;postID=2086674876772003695' title='0 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/2086674876772003695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/2086674876772003695'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/2008/10/autoincremented-version-in-assemblyinfo.html' title='Auto-incremented version in AssemblyInfo'/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4823629086439924282.post-8659654508492286120</id><published>2008-10-17T03:48:00.000-07:00</published><updated>2009-06-13T03:39:23.484-07: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='Border'/><category scheme='http://www.blogger.com/atom/ns#' term='Table'/><category scheme='http://www.blogger.com/atom/ns#' term='Grid'/><title type='text'>Table-like view in XAML using grid and border</title><content type='html'>Someone (as I do) may wish to create a table-like layout in XAML as this:&lt;br /&gt;&lt;img src="http://fedir.com/wpfhacks/wpf_xaml_table_border.png" width="463" height="417" /&gt;&lt;br /&gt;&lt;br /&gt;Additionally, I want the thickness of lines to be 1 point everywhere, and I don't want to use FlowDocument.&lt;br /&gt;&lt;br /&gt;At first glance it seems to be obvious, however, I have found no straightforward way to implement such layout because of the two reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Grid has no "border" property&lt;/li&gt;&lt;li&gt;One cannot create border with invisible side (&lt;span style="font-weight: bold;"&gt;update:&lt;/span&gt; this is not true, read comments below)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;So I have to use the hack which was introduced in HTML: create Grid with dark background and fill every column of it with white background. The margins of columns define the thickness of the table borders.&lt;br /&gt;&lt;br /&gt;The code will be like this:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="#BBBBBB"&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="18"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="Auto"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="Auto"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;         &lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;ColumnSpan&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="20"&lt;/span&gt; &lt;span class="attr"&gt;SnapsToDevicePixels&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="4,2,2,2"&lt;/span&gt; &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;="#666666"&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;some text&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="1,0,0,1"&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="50"&lt;/span&gt; &lt;span class="attr"&gt;SnapsToDevicePixels&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="1,0,1,1"&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="50"&lt;/span&gt; &lt;span class="attr"&gt;SnapsToDevicePixels&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4823629086439924282-8659654508492286120?l=wpfhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/8659654508492286120/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4823629086439924282&amp;postID=8659654508492286120' title='1 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/8659654508492286120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/8659654508492286120'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/2008/10/table-like-view-in-xaml-by-using-grid.html' title='Table-like view in XAML using grid and border'/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4823629086439924282.post-5621846151589397040</id><published>2008-10-06T06:10:00.000-07:00</published><updated>2008-10-07T00:58:25.418-07:00</updated><title type='text'>PageFunction and attached attribute Resources</title><content type='html'>It is convenient to embed resources in the page using attached property "Resources". However, due to the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/e283db1e-3111-4a4d-9111-749250ca121f/"&gt;bug in XAML parser&lt;/a&gt; it is a bit confusing to use this property with PageFunction.&lt;br /&gt;&lt;br /&gt;To make it works, you should define Resources property on the Page class instead of PageFunction.&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;PageFunction&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Page.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;      ...&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;   &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Page.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    ...&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;PageFunction&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&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/4823629086439924282-5621846151589397040?l=wpfhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/5621846151589397040/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4823629086439924282&amp;postID=5621846151589397040' title='0 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/5621846151589397040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/5621846151589397040'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/2008/10/pagefunction-and-attached-attribute.html' title='PageFunction and attached attribute Resources'/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4823629086439924282.post-463240855217664822</id><published>2008-10-01T07:29:00.000-07:00</published><updated>2010-04-07T14:12:09.436-07:00</updated><title type='text'>Disable button when text field is empty using Binding</title><content type='html'>It is a common task to make a button be disabled when no text is entered in some field.&lt;br /&gt;&lt;br /&gt;The simple binding can be like this:&lt;pre class="csharpcode"&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="SomeEditor"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Next&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button.Style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Style.Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DataTrigger&lt;/span&gt; &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding ElementName=SomeEditor,Path=Text}"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="Button.IsEnabled"&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="False"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DataTrigger&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Style.Triggers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Button.Style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4823629086439924282-463240855217664822?l=wpfhacks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wpfhacks.blogspot.com/feeds/463240855217664822/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4823629086439924282&amp;postID=463240855217664822' title='0 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/463240855217664822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4823629086439924282/posts/default/463240855217664822'/><link rel='alternate' type='text/html' href='http://wpfhacks.blogspot.com/2008/10/simple-binding.html' title='Disable button when text field is empty using Binding'/><author><name>WPF Hacks and Snippets</name><uri>http://www.blogger.com/profile/06822179890744467501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
