<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
  <channel>
    <title>LearnWPF.com - Goodbye battleship-grey</title>
    <link>http://LearnWPF.com/</link>
    <description>LearnWPF.com - Goodbye battleship-grey</description>
    <image>
      <url>http://learnwpf.com/Images/logo_80px.gif</url>
      <title>LearnWPF.com - Goodbye battleship-grey</title>
      <link>http://LearnWPF.com/</link>
    </image>
    <item>
      <dc:creator>LearnWPF.com</dc:creator>
      <title>Virtualizing TreeView for Silverlight, with Diagrams</title>
      <guid>http://LearnWPF.com/Posts/Post.aspx?postId=a61cdab5-81ee-467e-8d52-48c88a29ddf3</guid>
      <link>http://LearnWPF.com/Posts/Post.aspx?postId=a61cdab5-81ee-467e-8d52-48c88a29ddf3</link>
      <description>
		&lt;p&gt;For large hierarchies the TreeView in the Silverlight tool-kit suffers some performance problems, because the elements (once loaded and expanded, such that they could be seen by the user if they scrolled the scroll-bar) aren’t virtualized as aggressively as they could be. The for example the hierarchy shown below: If Child Node 4 is expanded, pushing Child Node 5 outside the limits of the view port of the TreeView then Node 5, as well as any other children of Node 4 that aren’t directly visible, _could_ be virtualized but currently aren’t by the Silverlight Treeview. When the number of invisible-but-loaded nodes is small the performance impact is negligible, but if Node 4 (in the example below) had 10,000 children, each with a complex data template applied to them the performance impact expanding the tree can be quite noticeable.&lt;/p&gt;
		&lt;p&gt;
				&lt;img border="0" hspace="0" alt="silverlight tree view diagram one - collapsed and expanded nodes" align="baseline" src="/Data/Images/treeview1.jpg" /&gt;
		&lt;/p&gt;
		&lt;p&gt;One approach to get around this is to recognize that a TreeView is just a List with indentation and expand/collapse semantics. By flattening your object hierarchy with an appropriate wrapper you can use the virtualization that is built into the ListBox, which happily does virtualize items that have disappeared off the top or the bottom of the list, by virtue of its use of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.virtualizingstackpanel(VS.95).aspx"&gt;VirtualizingStackPanel &lt;/a&gt;that was added in Silverlight 3.&lt;/p&gt;
		&lt;p&gt; The sample provided does just that with two classes TreeViewModel&amp;lt;T&amp;gt; and NodeViewModel&amp;lt;T&amp;gt;. TreeViewModel&amp;lt;T&amp;gt; contains a Nodes collection, an ObservableCollection of NodeViewModel&amp;lt;T&amp;gt; which the list is bound to. The visibility of the expand/collapse arrow is bound to the presence of children. When a NodeViewModel&amp;lt;T&amp;gt; is expanded it calls back to the TreeViewModel&amp;lt;T&amp;gt; to tell the TreeViewModel to create a new set of NodeViewModels based on the children of the node being expanded, and to insert them directly after node being expanded in the current list of nodes. When the TreeViewModel makes new nodes it increments the indentation property, which is used to drive how far in the node is rendered when it is shown. When a NodeViewModel&amp;lt;T&amp;gt; is collapsed it again calls the TreeViewModel&amp;lt;T&amp;gt; and basically tells it to throw away all the nodes that come after me in the Nodes collection, until you reach one that has the same indentation as me (or you reach the end of the list), at which point the TreeViewModel will know that it has removed all the children of the item that was collapsed.&lt;br /&gt;The sample provided is not a complete drop-in replacement for the TreeView control in the Silverlight toolkit. For one thing some of the expand/collapse semantics are a little different to a standard TreeView. For example if all the nodes in the tree are fully expanded, and the root node is collapsed and then re-expanded then the standard tree-view behaviour is for the tree to look the same as before the root node was collapsed, however this tree will only show the direct children of the root node after the root node is collapsed and then re-expanded, regardless of the state of the tree before. This is a side-effect of the way this implementation creates and destroys NodeViewModel&amp;lt;T&amp;gt; instances when a node is collapsed/expanded. When a NodeViewModel&amp;lt;T&amp;gt; is removed from the list of nodes the fact that it was previously expanded is lost. This could be changed by keeping instances of removed nodes around, but would complicate the expand/collapse methods in TreeViewModel&amp;lt;T&amp;gt;. Also some other TreeView standard keyboard short-cuts are missing (for example right arrow to expand a node, and left arrow to contract it) are not wired up. Also it is likely that this technique will become obsolete at some point when the TreeView in the Silverlight Toolkit catches up with the WPF one and implements this trick for itself. &lt;/p&gt;
		&lt;p&gt;
				&lt;img border="0" hspace="0" alt="Silverlight TreeView diagram 2 - class library" align="baseline" src="/Data/Images/treeview2.jpg " /&gt;
		&lt;/p&gt;
		&lt;p&gt;You can download the source code from &lt;a href="/Data/Images/LearnWPF.VirtualizingTreeView.zip"&gt;here&lt;/a&gt;. And here is an image of the sample running.&lt;/p&gt;
		&lt;p&gt;
				&lt;img border="0" hspace="0" alt="Tee View Sample Running" align="baseline" src="/Data/Images/virtualizing_SL_tree.png" /&gt;
		&lt;/p&gt;
</description>
      <pubDate>Thursday, June 24, 2010 10:12 PM</pubDate>
      <wfw:comment>http://LearnWPF.com/Posts/Post.aspx?postId=a61cdab5-81ee-467e-8d52-48c88a29ddf3#Feedback</wfw:comment>
      <comments>http://LearnWPF.com/Posts/Post.aspx?postId=a61cdab5-81ee-467e-8d52-48c88a29ddf3#Feedback</comments>
      <slash:comments>17</slash:comments>
      <wfw:commentRss>http://LearnWPF.com/CommentRss.ashx?postID=a61cdab5-81ee-467e-8d52-48c88a29ddf3</wfw:commentRss>
    </item>
    <item>
      <dc:creator>LearnWPF.com</dc:creator>
      <title>4 Free WPF Utilities I Use Every Day, that come with source!</title>
      <guid>http://LearnWPF.com/Posts/Post.aspx?postId=bc36ff0f-5131-492d-ba53-524a344b09c7</guid>
      <link>http://LearnWPF.com/Posts/Post.aspx?postId=bc36ff0f-5131-492d-ba53-524a344b09c7</link>
      <description>
		&lt;p&gt;Here are 4 WPF utilities I use almost daily, that also have the excellent property of coming with source-code included. &lt;/p&gt;
		&lt;p&gt;
		&lt;/p&gt;
		&lt;table&gt;
				&lt;tbody&gt;
						&lt;tr&gt;
								&lt;td&gt;
										&lt;img alt="Kaxaml icon" src="/Data/Images/icon_kaxaml.jpg" /&gt;
								&lt;/td&gt;
								&lt;td&gt;
										&lt;a href="http://kaxaml.com/"&gt;Kaxaml&lt;/a&gt;
								&lt;/td&gt;
								&lt;td&gt;Kaxaml is a great tool for quick experimentation with snippets of XAML. The editor has intellisense, and the app itself is gorgeous to look at. Written By &lt;a href="http://nerdplusart.com/"&gt;Robert Ingebretsen&lt;/a&gt; you can &lt;a href="http://www.codeplex.com/Wikipage?ProjectName=Kaxaml"&gt;download the source from codeplex&lt;/a&gt;.&lt;/td&gt;
						&lt;/tr&gt;
						&lt;tr&gt;
								&lt;td&gt;
										&lt;img alt="shazzam icon" src="/Data/Images/icon_shazzam.jpg" /&gt;
								&lt;/td&gt;
								&lt;td&gt;
										&lt;a href="http://www.shazzam-tool.com/"&gt;Shazzam&lt;/a&gt;
								&lt;/td&gt;
								&lt;td&gt;
										&lt;p&gt; &lt;/p&gt;
										&lt;p&gt;Based on the code for Kaxaml this is a nifty app for experimenting and developing pixel shaders, especially for inclusion in WPF applications. It compiles the shaders, builds C#/VB.NET "wrappers" and auto-generates a GUI for editing the shader properties inside of Shazzam (so you can 'twiddle the knobs' and see what the effect on the shader is). Developed by &lt;a href="http://blog.wpfwonderland.com/"&gt;Walt Ritscher&lt;/a&gt; it can also be &lt;a href="http://www.codeplex.com/Wikipage?ProjectName=shazzam"&gt;downloaded from codeplex&lt;/a&gt;.&lt;/p&gt;
								&lt;/td&gt;
						&lt;/tr&gt;
						&lt;tr&gt;
								&lt;td&gt;
										&lt;img alt="snoop icon" src="/Data/Images/icon_snoop.jpg" /&gt;
								&lt;/td&gt;
								&lt;td&gt;
										&lt;a href="http://blois.us/Snoop/"&gt;Snoop&lt;/a&gt;
								&lt;/td&gt;
								&lt;td&gt;
										&lt;p&gt; &lt;/p&gt;
										&lt;p&gt;Think "firebug for WPF" - Snoop is my favourite application for viewing, editing and inspecting the visual tree of WPF applications. From its irreverent icon down to the many nice little touches in the UI, it is a great app, and I find myself turning to it, usually to get a better understanding of my OWN code rather than anyone elses. Originally written by &lt;a href="http://blois.us/blog/"&gt;Peter Blois &lt;/a&gt;it is now also &lt;a href="http://snoopwpf.codeplex.com/"&gt;hosted on Codeplex&lt;/a&gt;.&lt;/p&gt;
										&lt;p&gt; &lt;/p&gt;
								&lt;/td&gt;
						&lt;/tr&gt;
						&lt;tr&gt;
								&lt;td&gt;
										&lt;img alt="inkscape logo" src="/Data/Images/icons_inkscape.jpg" /&gt;
								&lt;/td&gt;
								&lt;td&gt;
										&lt;a href="http://inkscape.org/"&gt;Inkscape&lt;/a&gt;
								&lt;/td&gt;
								&lt;td&gt;Inkscape is an open-source vector graphics editor, primarily targeting SVG but which in the last couple of versions added support for XAML. I enjoy using the inkscape editor more than I like Expression Design, although I think Expression Design's XAML output options are better than inkscape. Inkscape is none-the-less a useful tool, especially when working with "raw materials" that aren't in XAML format. You can &lt;a href="http://sourceforge.net/projects/inkscape/"&gt;download the source form sourceforge&lt;/a&gt;.&lt;/td&gt;
						&lt;/tr&gt;
				&lt;/tbody&gt;
		&lt;/table&gt;
</description>
      <pubDate>Wednesday, March 03, 2010 1:40 AM</pubDate>
      <wfw:comment>http://LearnWPF.com/Posts/Post.aspx?postId=bc36ff0f-5131-492d-ba53-524a344b09c7#Feedback</wfw:comment>
      <comments>http://LearnWPF.com/Posts/Post.aspx?postId=bc36ff0f-5131-492d-ba53-524a344b09c7#Feedback</comments>
      <slash:comments>162</slash:comments>
      <wfw:commentRss>http://LearnWPF.com/CommentRss.ashx?postID=bc36ff0f-5131-492d-ba53-524a344b09c7</wfw:commentRss>
    </item>
    <item>
      <dc:creator>LearnWPF.com</dc:creator>
      <title>Adding Simeltaneous Video Recording + Playback to WPFMediaKit's VideoCaptureElement</title>
      <guid>http://LearnWPF.com/Posts/Post.aspx?postId=82c12bbc-8b25-437a-8334-def8675f81b3</guid>
      <link>http://LearnWPF.com/Posts/Post.aspx?postId=82c12bbc-8b25-437a-8334-def8675f81b3</link>
      <description>
		&lt;p&gt;When it comes to awesome WPF + DirectX video hacks it's &lt;span id="dnn_ctr1111_ContentPane" class="DNNAlignleft"&gt;&lt;span id="dnn_ctr1111_MainView_ViewBlog_lblAuthor" class="blog_Description"&gt;&lt;a href="http://jmorrill.hjtcentral.com/"&gt;Jeremiah Morrill's&lt;/a&gt; world, we're just living in it. One of his great contributions to the WPF ecosystem is the &lt;a href="http://wpfmediakit.codeplex.com/"&gt;WPF Media Kit&lt;/a&gt; which adds DVD playback, webcam playback and a number of other capabilities to WPF. One slight deficiency with the webcam control (VideoCaptureElement) is that it doesn't allow simeltaneous recording and display of webcam content....until now!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="DNNAlignleft"&gt;
						&lt;span class="blog_Description"&gt;This &lt;a href="/Data/Images/WPFMediaKit_withWebcamCapture.zip"&gt;code&lt;/a&gt; adds simeltaneous video playback and capture to the VideoCaptureElement. VideoCaptureElement gets a "OutputFileName" property which is used to specify where the webcam output will be saved. If this property isn't set then the control functions as before, just showing webcam playback. Most of the changes are in VideoCapturePlayer (VideoCaptureElement is really only a WPF-ized wrapper around VideoCapturePlayer). I've left a copy of the un-modified version of VideoCapturePlayer.cs in the same directory (called VideoCapturePlayer_old.cs) for those who want to look at the differences for themselves, but the main part is where we check to see if the fileName field has been set and if so set up the relevant properties. &lt;/span&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="DNNAlignleft"&gt;
						&lt;span class="blog_Description"&gt;
								&lt;font color="#ffa500" size="2" face="Courier New"&gt;IBaseFilter mux = null;&lt;br /&gt;IFileSinkFilter sink = null;&lt;br /&gt;if (!string.IsNullOrEmpty(this.fileName))&lt;br /&gt;{&lt;br /&gt;    hr = graphBuilder.SetOutputFileName(MediaSubType.Asf, this.fileName, out mux, out sink);&lt;br /&gt;    DsError.ThrowExceptionForHR(hr);&lt;/font&gt;
						&lt;/span&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="DNNAlignleft"&gt;
						&lt;span class="blog_Description"&gt;
								&lt;font color="#ffa500" size="2" face="Courier New"&gt;    hr = graphBuilder.RenderStream(PinCategory.Capture, MediaType.Video, m_captureDevice, null, mux);&lt;br /&gt;    DsError.ThrowExceptionForHR(hr);&lt;/font&gt;
						&lt;/span&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="DNNAlignleft"&gt;
						&lt;span class="blog_Description"&gt;
								&lt;font color="#ffa500" size="2" face="Courier New"&gt;    &lt;font color="#9acd32"&gt;// use the first audio device&lt;/font&gt;&lt;br /&gt;    var audioDevices = DsDevice.GetDevicesOfCat(FilterCategory.AudioInputDevice);&lt;/font&gt;
						&lt;/span&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="DNNAlignleft"&gt;
						&lt;span class="blog_Description"&gt;
								&lt;font color="#ffa500" size="2" face="Courier New"&gt;    if (audioDevices.Length &amp;gt; 0)&lt;br /&gt;    {&lt;br /&gt;        var audioDevice = AddFilterByDevicePath(m_graph,&lt;br /&gt;                                            FilterCategory.AudioInputDevice,&lt;br /&gt;                                            audioDevices[0].DevicePath);&lt;/font&gt;
						&lt;/span&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="DNNAlignleft"&gt;
						&lt;span class="blog_Description"&gt;
								&lt;font color="#ffa500" size="2" face="Courier New"&gt;        hr = graphBuilder.RenderStream(PinCategory.Capture, MediaType.Audio, audioDevice, null, mux);&lt;br /&gt;        DsError.ThrowExceptionForHR(hr);&lt;br /&gt;    }&lt;br /&gt;}&lt;/font&gt;
						&lt;/span&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="DNNAlignleft"&gt;
						&lt;span class="blog_Description"&gt;
								&lt;font color="#ffa500" size="2" face="Courier New"&gt;hr = graphBuilder.RenderStream(PinCategory.Preview,&lt;br /&gt;                               MediaType.Video,&lt;br /&gt;                               m_captureDevice,&lt;br /&gt;                               null,&lt;br /&gt;                               m_renderer);&lt;/font&gt;
								&lt;br /&gt;
						&lt;/span&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="DNNAlignleft"&gt;
						&lt;span class="blog_Description"&gt;The last call to RenderStream() uses a PinCategory of Preview which allows the display of video, the previous calls to RenderStream() were using the Capture pin category, which causes the media to be written to disk. I've updated the sample application that accompanies WPFMediaKit to default to the "webcam sample" screen, and to save the webcam output as a randomly named .wmv file to the "my documents" folder.&lt;/span&gt; &lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="DNNAlignleft"&gt;
						&lt;span class="blog_Description"&gt;This code is very much proof-of-concept, and I'm concerned about leaks in there, but it does work. One limitation is that the file name can't be set after the graph has been set up, but this seems to be a common limitation with properties on the capture device - to change them you have to re-create the graph.&lt;/span&gt;
				&lt;/span&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;span class="DNNAlignleft"&gt;
						&lt;span class="blog_Description"&gt;In any case I hope you find this &lt;a href="/data/images/WPFMediaKit_withWebcamCapture.zip"&gt;code&lt;/a&gt; useful, and I'll be offering it up to Jeremiah for consideration as a patch to WPFMediaKit.&lt;/span&gt;
				&lt;/span&gt;
		&lt;/p&gt;
</description>
      <pubDate>Saturday, January 09, 2010 11:46 PM</pubDate>
      <wfw:comment>http://LearnWPF.com/Posts/Post.aspx?postId=82c12bbc-8b25-437a-8334-def8675f81b3#Feedback</wfw:comment>
      <comments>http://LearnWPF.com/Posts/Post.aspx?postId=82c12bbc-8b25-437a-8334-def8675f81b3#Feedback</comments>
      <slash:comments>3</slash:comments>
      <wfw:commentRss>http://LearnWPF.com/CommentRss.ashx?postID=82c12bbc-8b25-437a-8334-def8675f81b3</wfw:commentRss>
    </item>
    <item>
      <dc:creator>LearnWPF.com</dc:creator>
      <title>Free Embeddable Fonts for your WPF Applications</title>
      <guid>http://LearnWPF.com/Posts/Post.aspx?postId=d577efe7-20d4-4eb7-9839-b1b789526c9b</guid>
      <link>http://LearnWPF.com/Posts/Post.aspx?postId=d577efe7-20d4-4eb7-9839-b1b789526c9b</link>
      <description>
		&lt;p&gt;Using attractive typefaces can add individuality to your application, or reinforce your brand. Although we talked about the means to embed WPF fonts in your application a&lt;a href="/Posts/Post.aspx?postId=f6e15729-9391-4e71-ad1f-eea8b22b05bf"&gt; long time ago&lt;/a&gt;, the biggest issue with font embedding is the licensing issues associated with fonts, especially if you’re working on a code sample or free utility. Most fonts, even the multitude that you can download for free online, are not licensed to allow redistribution as part of your application.&lt;/p&gt;
		&lt;p&gt;Fortunately a small group of fonts has started to be released under a much more permissive license – &lt;a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;amp;id=OFL"&gt;the SIL Open Font License (OFL)&lt;/a&gt; - which specifically allows embedding in applications, both commercial, free and open-source (disclaimer: I am not a lawyer, you should read the license yourself and/or seek legal advice before making any decisions regarding font licensing). This is a very generous move on the part of these type designers who spend considerable time and skill on designing beautiful fonts.&lt;br /&gt;&lt;img border="0" hspace="0" alt="" align="baseline" src="/Data/Images/OFLFonts.png" /&gt;&lt;/p&gt;
		&lt;p&gt;Here is a sample application that uses some of my favourite of OFL-licensed fonts from around the web including &lt;a href="http://www.campivisivi.net/titillium/?page_id=2"&gt;Titillium&lt;/a&gt;, &lt;a href="http://www.theleagueofmoveabletype.com/fonts/8-goudy-bookletter-1911"&gt;Goudy Bookletter 1911&lt;/a&gt;, and &lt;a href="http://www.theleagueofmoveabletype.com/fonts/1-junction"&gt;Junction&lt;/a&gt;. Great resources for finding new fonts with the OFL license is the &lt;a href="http://openfontlibrary.org/media/tags/OFL"&gt;Open Font Library&lt;/a&gt; and &lt;a href="http://www.theleagueofmoveabletype.com/"&gt;the League of Movable Type&lt;/a&gt;.&lt;/p&gt;
		&lt;p&gt;
				&lt;a href="/Data/Images/OpenFontLicenseSample.zip"&gt;download source [413 KB] (including fonts!)&lt;/a&gt;
		&lt;/p&gt;
		&lt;p&gt;From a programming point-of-view it pays to remember &lt;a href="http://msdn.microsoft.com/en-us/library/ms753303.aspx"&gt;this trick from the MSDN&lt;/a&gt; for finding the names of embedded fonts. Sometimes the name is not apparent from the file name OR from the info you see in the "Install Font" dialog in windows. Instead you can programatically iterate through the installed fonts using this snippet of code.&lt;/p&gt;
		&lt;p&gt;
				&lt;font color="#9acd32" size="2" face="Courier New"&gt;// iterates over embedded fonts - assumes you have fonts in a sub-directory called "Fonts" in the project in visual studio&lt;/font&gt;
				&lt;br /&gt;
				&lt;font color="#ffa500" size="2" face="Courier New"&gt;foreach (var fontFamily in Fonts.GetFontFamilies(new Uri("pack://application:,,,/"), "./Fonts/"))&lt;br /&gt;{&lt;br /&gt;    &lt;font color="#9acd32"&gt;// do stuff with fonts here&lt;/font&gt;&lt;br /&gt;}&lt;/font&gt;
		&lt;/p&gt;
</description>
      <pubDate>Monday, November 23, 2009 10:24 PM</pubDate>
      <wfw:comment>http://LearnWPF.com/Posts/Post.aspx?postId=d577efe7-20d4-4eb7-9839-b1b789526c9b#Feedback</wfw:comment>
      <comments>http://LearnWPF.com/Posts/Post.aspx?postId=d577efe7-20d4-4eb7-9839-b1b789526c9b#Feedback</comments>
      <slash:comments>95</slash:comments>
      <wfw:commentRss>http://LearnWPF.com/CommentRss.ashx?postID=d577efe7-20d4-4eb7-9839-b1b789526c9b</wfw:commentRss>
    </item>
    <item>
      <dc:creator>LearnWPF.com</dc:creator>
      <title>.NET Framework 4.0 Solves the Single Biggest Problem with WPF Development</title>
      <guid>http://LearnWPF.com/Posts/Post.aspx?postId=6899ba7a-5ff7-4f56-a85d-a5a7bc76337f</guid>
      <link>http://LearnWPF.com/Posts/Post.aspx?postId=6899ba7a-5ff7-4f56-a85d-a5a7bc76337f</link>
      <description>
		&lt;p&gt;.NET Framework 4.0 solves the single biggest problem with WPF development - The size of the .NET framework redistributable. The full redistributable for the x86 version of the .NET framework weighs in at a svelte 37.71 MB, and the cut-down client profile (that should be suitable for many WPF client applications) is just under 31 MB! For 64-bit platforms (x64 and ia64) the full redistributable are about 55 MB each. They both have the x86 bits included also so x86 .NET applications can run in the WoW. You can get all the details here (including what is in and out of the client profile, how to target etc &lt;a href="http://blogs.msdn.com/jgoldb/archive/2009/10/19/what-s-new-in-net-framework-4-client-profile-beta-2.aspx"&gt;here&lt;/a&gt;). Compared to the 230 MB for the full redistributable for .NET Framework 3.5 sp1 this is a welcome relief. Whatever techniques the .NET framework team have learned putting silverlight on an extreme diet have paid off here too. Lets hope this minification of the framework continues into the RTM version.&lt;/p&gt;
</description>
      <pubDate>Wednesday, October 21, 2009 10:09 PM</pubDate>
      <wfw:comment>http://LearnWPF.com/Posts/Post.aspx?postId=6899ba7a-5ff7-4f56-a85d-a5a7bc76337f#Feedback</wfw:comment>
      <comments>http://LearnWPF.com/Posts/Post.aspx?postId=6899ba7a-5ff7-4f56-a85d-a5a7bc76337f#Feedback</comments>
      <slash:comments>57</slash:comments>
      <wfw:commentRss>http://LearnWPF.com/CommentRss.ashx?postID=6899ba7a-5ff7-4f56-a85d-a5a7bc76337f</wfw:commentRss>
    </item>
    <item>
      <dc:creator>LearnWPF.com</dc:creator>
      <title>The Visual Guide to WPF Font Weights</title>
      <guid>http://LearnWPF.com/Posts/Post.aspx?postId=eeeb2c93-f87c-48de-99a5-a736c72efeed</guid>
      <link>http://LearnWPF.com/Posts/Post.aspx?postId=eeeb2c93-f87c-48de-99a5-a736c72efeed</link>
      <description>
		&lt;p&gt;Have you ever wondered what the difference between DemiBold and SemiBold text is? (the answer: not a whole lot). Have you ever wanted to go beyond "Normal" and "Bold" in your font weight selections? If so then this post is for you.&lt;/p&gt;
		&lt;p&gt;The following shows the different font weights (both names and numeric values) for the default UI font in Windows 7 and Windows Vista - Segoe UI at 24pt.&lt;/p&gt;
		&lt;p&gt;
				&lt;img border="0" hspace="0" alt="Segoe UI Font Weights" align="baseline" src="/Data/Images/FontWeights.png" /&gt;
		&lt;/p&gt;
		&lt;p&gt;We can immediately see that Segoe UI supports a variety of weights, but why does 'Thin' (supposedly at 100-weight) look the same as 'Light' (300-weight)? The answer is the font itself - it only supports 4 different weights. Switching to Calibri we can see that it contains only two different weights.&lt;/p&gt;
		&lt;p&gt;
				&lt;img border="0" hspace="0" alt="Calibri Font Weights" align="baseline" src="/Data/Images/CalibriFontWeights.png" /&gt;
		&lt;/p&gt;
		&lt;p&gt;The moral of the story is that WPF provides great typographic support for different font weights, but not all fonts will support all weights. Here is the XAML code to play around with different font families.&lt;/p&gt;
		&lt;p&gt;
				&lt;font size="2"&gt;
						&lt;font color="#ffa500" face="Courier New"&gt;&amp;lt;Page&lt;br /&gt;  xmlns="&lt;/font&gt;
						&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;
								&lt;font color="#ffa500" face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/font&gt;
						&lt;/a&gt;
						&lt;font color="#ffa500" face="Courier New"&gt;"&lt;br /&gt;  xmlns:x="&lt;/font&gt;
						&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml"&gt;
								&lt;font color="#ffa500" face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/font&gt;
						&lt;/a&gt;
						&lt;font color="#ffa500" face="Courier New"&gt;"&amp;gt;&lt;br /&gt;  &amp;lt;Page.Resources&amp;gt;&lt;br /&gt;    &amp;lt;Style TargetType="{x:Type TextBlock}"&amp;gt;&lt;br /&gt;      &amp;lt;Setter Property="FontFamily" Value="Calibri" /&amp;gt;&lt;br /&gt;      &amp;lt;Setter Property="Margin" Value="5" /&amp;gt;&lt;br /&gt;      &amp;lt;Setter Property="FontSize" Value="24" /&amp;gt;&lt;br /&gt;    &amp;lt;/Style&amp;gt;&lt;br /&gt;  &amp;lt;/Page.Resources&amp;gt;&lt;br /&gt;  &amp;lt;StackPanel &amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="Thin"  Text="Jackdaws love my big sphinx of quartz - Thin - 100" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="UltraLight"  Text="Jackdaws love my big sphinx of quartz - UltraLight - 200" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="ExtraLight"  Text="Jackdaws love my big sphinx of quartz - ExtraLight - 200" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="Light"  Text="Jackdaws love my big sphinx of quartz - Light - 300" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="Normal"  Text="Jackdaws love my big sphinx of quartz - Normal - 400" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="Regular"  Text="Jackdaws love my big sphinx of quartz - Regular - 400" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="Medium"  Text="Jackdaws love my big sphinx of quartz - Medium - 500" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="DemiBold"  Text="Jackdaws love my big sphinx of quartz - DemiBold - 600" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="SemiBold"  Text="Jackdaws love my big sphinx of quartz - SemiBold - 600" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="Bold"  Text="Jackdaws love my big sphinx of quartz - Bold - 700" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="UltraBold"  Text="Jackdaws love my big sphinx of quartz - UltraBold - 800" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="ExtraBold"  Text="Jackdaws love my big sphinx of quartz - ExtraBold - 800" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="Heavy"  Text="Jackdaws love my big sphinx of quartz - Heavy - 900" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="Black"  Text="Jackdaws love my big sphinx of quartz - Black - 900" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="ExtraBlack"  Text="Jackdaws love my big sphinx of quartz - ExtraBlack - 950" /&amp;gt;&lt;br /&gt;&amp;lt;TextBlock FontWeight="UltraBlack"  Text="Jackdaws love my big sphinx of quartz - UltraBlack - 950" /&amp;gt;&lt;br /&gt;  &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;&amp;lt;/Page&amp;gt;&lt;/font&gt;
				&lt;/font&gt;
		&lt;/p&gt;
</description>
      <pubDate>Tuesday, October 06, 2009 11:29 PM</pubDate>
      <wfw:comment>http://LearnWPF.com/Posts/Post.aspx?postId=eeeb2c93-f87c-48de-99a5-a736c72efeed#Feedback</wfw:comment>
      <comments>http://LearnWPF.com/Posts/Post.aspx?postId=eeeb2c93-f87c-48de-99a5-a736c72efeed#Feedback</comments>
      <slash:comments>108</slash:comments>
      <wfw:commentRss>http://LearnWPF.com/CommentRss.ashx?postID=eeeb2c93-f87c-48de-99a5-a736c72efeed</wfw:commentRss>
    </item>
    <item>
      <dc:creator>LearnWPF.com</dc:creator>
      <title>Round Gel-like button template for WPF</title>
      <guid>http://LearnWPF.com/Posts/Post.aspx?postId=ef73ce54-ca51-4719-91b5-1ed7a4ebeca2</guid>
      <link>http://LearnWPF.com/Posts/Post.aspx?postId=ef73ce54-ca51-4719-91b5-1ed7a4ebeca2</link>
      <description>I keep re-creating this from time to time, so I thought I would put it up for others to use. This is a very simple style for rounded gel-like buttons (shown here magnified 3x, but the style works OK for buttons of various sizes). The left-most one is the "normal" style, the middle one is mouse-over and focused, and the right one is disabled. These are great with a slider to create "zoom" type controls, or for play/pause buttons etc.
&lt;br /&gt;&lt;img src="/Data/Images/gelbuttons.png" /&gt;&lt;br /&gt;&lt;a href="/Data/Images/roundgelbuttonStyle.xaml"&gt;Source Xaml&lt;/a&gt;</description>
      <pubDate>Monday, April 27, 2009 10:08 PM</pubDate>
      <wfw:comment>http://LearnWPF.com/Posts/Post.aspx?postId=ef73ce54-ca51-4719-91b5-1ed7a4ebeca2#Feedback</wfw:comment>
      <comments>http://LearnWPF.com/Posts/Post.aspx?postId=ef73ce54-ca51-4719-91b5-1ed7a4ebeca2#Feedback</comments>
      <slash:comments>81</slash:comments>
      <wfw:commentRss>http://LearnWPF.com/CommentRss.ashx?postID=ef73ce54-ca51-4719-91b5-1ed7a4ebeca2</wfw:commentRss>
    </item>
    <item>
      <dc:creator>LearnWPF.com</dc:creator>
      <title>Where are the default templates for FlowDocumentScrollViewer located?</title>
      <guid>http://LearnWPF.com/Posts/Post.aspx?postId=c0a14f40-8ce3-45f6-9b1f-5fd573b9b98f</guid>
      <link>http://LearnWPF.com/Posts/Post.aspx?postId=c0a14f40-8ce3-45f6-9b1f-5fd573b9b98f</link>
      <description>Most controls in WPF are "look-less" and have no default rendering. Instead there are a number of "templates" that are applied by WPF. The control template is chosen by WPF, and can be over-ridden by the developer. In the absence of any developer intervention a default template is loaded from a resource assembly corresponding to the operating system that the application runs on (PresentationFramework.Aero.dll for windows vista styles and control templates, PresentationFramework.Luna.dll for windows XP etc). I was puzzled to learn that FlowDocumentScrollViewer and a number of other "document" type controls like FlowDocumentReader do NOT have control templates in these "theme" dlls. So where are they? It turns out they are stored in another ancilliary WPF dll called PresentationUI.dll in the themes/generic.baml resource. This dll also contains the "progress" download and error templates for XBAP applications.  </description>
      <pubDate>Wednesday, April 22, 2009 12:54 AM</pubDate>
      <wfw:comment>http://LearnWPF.com/Posts/Post.aspx?postId=c0a14f40-8ce3-45f6-9b1f-5fd573b9b98f#Feedback</wfw:comment>
      <comments>http://LearnWPF.com/Posts/Post.aspx?postId=c0a14f40-8ce3-45f6-9b1f-5fd573b9b98f#Feedback</comments>
      <slash:comments>67</slash:comments>
      <wfw:commentRss>http://LearnWPF.com/CommentRss.ashx?postID=c0a14f40-8ce3-45f6-9b1f-5fd573b9b98f</wfw:commentRss>
    </item>
    <item>
      <dc:creator>LearnWPF.com</dc:creator>
      <title>Composite Application Guidance for WPF and Silverlight Released</title>
      <guid>http://LearnWPF.com/Posts/Post.aspx?postId=6bad4b90-d03f-43b8-93a2-370e64000321</guid>
      <link>http://LearnWPF.com/Posts/Post.aspx?postId=6bad4b90-d03f-43b8-93a2-370e64000321</link>
      <description>I'm not sure if I missed the memo, but P&amp;amp;P's Composite Application Guidance for WPF (formerly PRISM) is now live for Silverlight too (AKA PRISM V2)! Download it &lt;a href="http://msdn.microsoft.com/en-us/library/dd458809.aspx"&gt;here&lt;/a&gt;.</description>
      <pubDate>Wednesday, February 18, 2009 3:51 PM</pubDate>
      <wfw:comment>http://LearnWPF.com/Posts/Post.aspx?postId=6bad4b90-d03f-43b8-93a2-370e64000321#Feedback</wfw:comment>
      <comments>http://LearnWPF.com/Posts/Post.aspx?postId=6bad4b90-d03f-43b8-93a2-370e64000321#Feedback</comments>
      <slash:comments>96</slash:comments>
      <wfw:commentRss>http://LearnWPF.com/CommentRss.ashx?postID=6bad4b90-d03f-43b8-93a2-370e64000321</wfw:commentRss>
    </item>
    <item>
      <dc:creator>LearnWPF.com</dc:creator>
      <title>Free reuxables WPF Theme - Paperlite available for a limited time</title>
      <guid>http://LearnWPF.com/Posts/Post.aspx?postId=dd2af66c-822a-40f2-b391-559534d2afe4</guid>
      <link>http://LearnWPF.com/Posts/Post.aspx?postId=dd2af66c-822a-40f2-b391-559534d2afe4</link>
      <description>Fellow WPF MVP &lt;a href="http://blog.nukeation.com/default.aspx"&gt;Dax Pandhi&lt;/a&gt;'s company nukeation has a &lt;a href="http://reuxables.nukeation.com/themePaperLite.aspx"&gt;free WPF theme called paperlite available for a "limited time"&lt;/a&gt;.&lt;img src="/Data/Images/paperlite.png" /&gt;.&lt;br /&gt; Their new &lt;a href="http://reuxables.nukeation.com/uxkits.aspx"&gt;ux kit&lt;/a&gt; (code-named "Alpha Dog") not-free looks fantastic. </description>
      <pubDate>Tuesday, February 17, 2009 12:11 AM</pubDate>
      <wfw:comment>http://LearnWPF.com/Posts/Post.aspx?postId=dd2af66c-822a-40f2-b391-559534d2afe4#Feedback</wfw:comment>
      <comments>http://LearnWPF.com/Posts/Post.aspx?postId=dd2af66c-822a-40f2-b391-559534d2afe4#Feedback</comments>
      <slash:comments>43</slash:comments>
      <wfw:commentRss>http://LearnWPF.com/CommentRss.ashx?postID=dd2af66c-822a-40f2-b391-559534d2afe4</wfw:commentRss>
    </item>
  </channel>
</rss>