<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Santiago Blanco on .Net</title>
	<atom:link href="http://sblanco.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sblanco.wordpress.com</link>
	<description>Finding solutions to my everyday programming problems</description>
	<lastBuildDate>Wed, 21 Dec 2011 14:03:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='sblanco.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Santiago Blanco on .Net</title>
		<link>http://sblanco.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://sblanco.wordpress.com/osd.xml" title="Santiago Blanco on .Net" />
	<atom:link rel='hub' href='http://sblanco.wordpress.com/?pushpress=hub'/>
		<item>
		<title>WPF &#8211; Bind ContextMenu Command from DataGrid Header.</title>
		<link>http://sblanco.wordpress.com/2011/12/21/wpf-bind-contextmenu-command-from-datagrid-header/</link>
		<comments>http://sblanco.wordpress.com/2011/12/21/wpf-bind-contextmenu-command-from-datagrid-header/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 13:56:29 +0000</pubDate>
		<dc:creator>Santiago Blanco</dc:creator>
				<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">https://sblanco.wordpress.com/?p=74</guid>
		<description><![CDATA[The DataGridColumnHeaders on the WPF DataGrid are not part of the VissualTree so we cannot use bindings to bind the content to the ViewModel, or in my case the commands on the header context menu. To make the bindings work, we are going to need the CommandReference class that was part of the MVVM Toolkit: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=74&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The DataGridColumnHeaders on the WPF DataGrid are not part of the VissualTree so we cannot use bindings to bind the content to the ViewModel, or in my case the commands on the header context menu.</p>
<p>To make the bindings work, we are going to need the CommandReference class that was part of the MVVM Toolkit:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a7fa21b0-337e-46d4-a927-6c0acb6f4f28" class="wlWriterEditableSmartContent">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;max-height:300px;overflow:auto;">
<ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;">
<li>  <span style="color:#808080;">///</span><span style="color:#008000;"> </span><span style="color:#808080;">&lt;summary&gt;</span><span style="color:#008000;"></span></li>
<li style="background:#f3f3f3;"><span style="color:#808080;">///</span><span style="color:#008000;"> This class facilitates associating a key binding in XAML markup to  a command     </span></li>
<li><span style="color:#808080;">///</span><span style="color:#008000;"> defined in a View Model by exposing a Command dependency property.      </span></li>
<li style="background:#f3f3f3;"><span style="color:#808080;">///</span><span style="color:#008000;"> The class derives from Freezable to work around a limitation in WPF when data-binding from XAML.      </span></li>
<li><span style="color:#808080;">///</span><span style="color:#008000;"> </span><span style="color:#808080;">&lt;/summary&gt;</span><span style="color:#008000;">      </span></li>
<li style="background:#f3f3f3;"><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> <span style="color:#2b91af;">CommandReference</span> : <span style="color:#2b91af;">Freezable</span>, <span style="color:#2b91af;">ICommand</span></li>
<li>{</li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">static</span> <span style="color:#0000ff;">readonly</span> <span style="color:#2b91af;">DependencyProperty</span> CommandProperty = <span style="color:#2b91af;">DependencyProperty</span>.Register( <span style="color:#a31515;">&quot;Command&quot;</span>, <span style="color:#0000ff;">typeof</span>( <span style="color:#2b91af;">ICommand</span> ), <span style="color:#0000ff;">typeof</span>( <span style="color:#2b91af;">CommandReference</span> ),</li>
<li>        <span style="color:#0000ff;">new</span> <span style="color:#2b91af;">PropertyMetadata</span>( <span style="color:#0000ff;">new</span> <span style="color:#2b91af;">PropertyChangedCallback</span>( OnCommandChanged ) ) );</li>
<li style="background:#f3f3f3;">&nbsp;</li>
<li>    <span style="color:#0000ff;">public</span> CommandReference()</li>
<li style="background:#f3f3f3;">    { }</li>
<li>&nbsp;</li>
<li style="background:#f3f3f3;">&nbsp;</li>
<li>    <span style="color:#0000ff;">public</span> <span style="color:#2b91af;">ICommand</span> Command</li>
<li style="background:#f3f3f3;">    {</li>
<li>        <span style="color:#0000ff;">get</span> { <span style="color:#0000ff;">return</span> (<span style="color:#2b91af;">ICommand</span>)GetValue( CommandProperty ); }</li>
<li style="background:#f3f3f3;">        <span style="color:#0000ff;">set</span> { SetValue( CommandProperty, <span style="color:#0000ff;">value</span> ); }</li>
<li>    }</li>
<li style="background:#f3f3f3;">&nbsp;</li>
<li>&nbsp;</li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">#region</span> ICommand Members</li>
<li>&nbsp;</li>
<li style="background:#f3f3f3;">&nbsp;</li>
<li>    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">bool</span> CanExecute( <span style="color:#0000ff;">object</span> parameter )</li>
<li style="background:#f3f3f3;">    {</li>
<li>        <span style="color:#0000ff;">if</span>( Command != <span style="color:#0000ff;">null</span> )</li>
<li style="background:#f3f3f3;">            <span style="color:#0000ff;">return</span> Command.CanExecute( parameter );</li>
<li>&nbsp;</li>
<li style="background:#f3f3f3;">        <span style="color:#0000ff;">return</span> <span style="color:#0000ff;">false</span>;</li>
<li>    }</li>
<li style="background:#f3f3f3;">&nbsp;</li>
<li>    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">void</span> Execute( <span style="color:#0000ff;">object</span> parameter )</li>
<li style="background:#f3f3f3;">    {</li>
<li>        Command.Execute( parameter );</li>
<li style="background:#f3f3f3;">    }</li>
<li>&nbsp;</li>
<li style="background:#f3f3f3;">&nbsp;</li>
<li>    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">event</span> <span style="color:#2b91af;">EventHandler</span> CanExecuteChanged;</li>
<li style="background:#f3f3f3;">&nbsp;</li>
<li>    <span style="color:#0000ff;">private</span> <span style="color:#0000ff;">static</span> <span style="color:#0000ff;">void</span> OnCommandChanged( <span style="color:#2b91af;">DependencyObject</span> d, <span style="color:#2b91af;">DependencyPropertyChangedEventArgs</span> e )</li>
<li style="background:#f3f3f3;">    {</li>
<li>        <span style="color:#2b91af;">CommandReference</span> commandReference = d <span style="color:#0000ff;">as</span> <span style="color:#2b91af;">CommandReference</span>;</li>
<li style="background:#f3f3f3;">        <span style="color:#2b91af;">ICommand</span> oldCommand = e.OldValue <span style="color:#0000ff;">as</span> <span style="color:#2b91af;">ICommand</span>;</li>
<li>        <span style="color:#2b91af;">ICommand</span> newCommand = e.NewValue <span style="color:#0000ff;">as</span> <span style="color:#2b91af;">ICommand</span>;</li>
<li style="background:#f3f3f3;">&nbsp;</li>
<li>        <span style="color:#0000ff;">if</span>( oldCommand != <span style="color:#0000ff;">null</span> )</li>
<li style="background:#f3f3f3;">        {</li>
<li>            oldCommand.CanExecuteChanged -= commandReference.CanExecuteChanged;</li>
<li style="background:#f3f3f3;">        }</li>
<li>&nbsp;</li>
<li style="background:#f3f3f3;">        <span style="color:#0000ff;">if</span>( newCommand != <span style="color:#0000ff;">null</span> )</li>
<li>        {</li>
<li style="background:#f3f3f3;">            newCommand.CanExecuteChanged += commandReference.CanExecuteChanged;</li>
<li>        }</li>
<li style="background:#f3f3f3;">    }</li>
<li>&nbsp;</li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">#endregion</span></li>
<li>&nbsp;</li>
<li style="background:#f3f3f3;">&nbsp;</li>
<li>    <span style="color:#0000ff;">#region</span> Freezable</li>
<li style="background:#f3f3f3;">&nbsp;</li>
<li>    <span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">override</span> <span style="color:#2b91af;">Freezable</span> CreateInstanceCore()</li>
<li style="background:#f3f3f3;">    {</li>
<li>        <span style="color:#0000ff;">throw</span> <span style="color:#0000ff;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</li>
<li style="background:#f3f3f3;">    }</li>
<li>&nbsp;</li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">#endregion</span></li>
<li>&nbsp;</li>
<li style="background:#f3f3f3;">}</li>
</ol></div>
</p></div>
</p></div>
<p>Using this class we create a command reference on the view resources for each command that we want to bind to the ViewModel:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f359b739-5b36-415b-b060-f8d3bdd544fd" class="wlWriterEditableSmartContent">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;max-height:300px;overflow:auto;">
<ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;">
<li><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">UserControl.Resources</span><span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">  <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">pr:CommandReference</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">x:Key</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">FirstCommandReference</span>&quot;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">Command</span><span style="color:#0000ff;">=</span>&quot;{<span style="color:#0000ff;">Binding FirstCommand}</span>&quot;<span style="color:#0000ff;"> /&gt;</span></li>
<li>  <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">pr:CommandReference</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">x:Key</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">SecondCommandReference</span>&quot;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">Command</span><span style="color:#0000ff;">=</span>&quot;{<span style="color:#0000ff;">Binding SecondCommand}</span>&quot;<span style="color:#0000ff;"> /&gt;</span></li>
</ol></div>
</p></div>
</p></div>
<p>Then we create a context menu also as a Style resource for the column header:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b091265b-fa43-41a4-9306-75610d6c737c" class="wlWriterEditableSmartContent">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;max-height:300px;overflow:auto;">
<ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;">
<li><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">Style</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">x:Key</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">dataGridColumnHeaderStyle</span>&quot;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">TargetType</span><span style="color:#0000ff;">=</span>&quot;{<span style="color:#0000ff;">x:Type DataGridColumnHeader}</span>&quot;<span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">  <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">Setter</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">Property</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">ContextMenu</span>&quot;<span style="color:#0000ff;"> &gt;</span></li>
<li>    <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">Setter.Value</span><span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">  &lt;</span><span style="color:#a31515;">ContextMenu</span><span style="color:#0000ff;">&gt;</span></li>
<li>        <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">MenuItem</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">Header</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">First Command</span>&quot;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">Command</span><span style="color:#0000ff;">=</span>&quot;{<span style="color:#0000ff;">StaticResource FirstCommandReference}</span>&quot;<span style="color:#0000ff;"> /&gt;</span></li>
<li style="background:#f3f3f3;">        <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">MenuItem</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">Header</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">Second Command</span>&quot;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">Command</span><span style="color:#0000ff;">=</span>&quot;{<span style="color:#0000ff;">StaticResource SecondCommandReference}</span>&quot;<span style="color:#0000ff;"> /&gt;</span></li>
<li>    <span style="color:#0000ff;">  &lt;/</span><span style="color:#a31515;">ContextMenu</span><span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">Setter.Value</span><span style="color:#0000ff;">&gt;</span></li>
<li>  <span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">Setter</span><span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;"><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">Style</span><span style="color:#0000ff;">&gt;</span></li>
</ol></div>
</p></div>
</p></div>
<p>And as a final step, we apply that style to the column header on the DataGrid:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:df83a1e8-5bd4-4406-9bef-ab523f1c807c" class="wlWriterEditableSmartContent">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;max-height:300px;overflow:auto;">
<ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;">
<li><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">DataGrid</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">ItemsSource</span><span style="color:#0000ff;">=</span>&quot;{<span style="color:#0000ff;">Binding MyDataSourceOnTheViewModel}</span>&quot;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">CanUserReorderColumns</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">False</span>&quot;</li>
<li style="background:#f3f3f3;">        <span style="color:#0000ff;">  </span><span style="color:#ff0000;">ColumnHeaderStyle</span><span style="color:#0000ff;">=</span>&quot;{<span style="color:#0000ff;">StaticResource dataGridColumnHeaderStyle }</span>&quot;<span style="color:#0000ff;"> </span></li>
<li>        <span style="color:#0000ff;">  </span><span style="color:#ff0000;">CurrentColumn</span><span style="color:#0000ff;">=</span>&quot;{<span style="color:#0000ff;">Binding CurrentColumn, Mode=OneWayToSource}</span>&quot;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">AutoGenerateColumns</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">True</span>&quot;<span style="color:#0000ff;">&gt;</span></li>
</ol></div>
</p></div>
</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sblanco.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sblanco.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sblanco.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sblanco.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sblanco.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sblanco.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sblanco.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sblanco.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sblanco.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sblanco.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sblanco.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sblanco.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sblanco.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sblanco.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=74&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sblanco.wordpress.com/2011/12/21/wpf-bind-contextmenu-command-from-datagrid-header/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/043c475d8769e4089a798ad84b681e40?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sblancoleis</media:title>
		</media:content>
	</item>
		<item>
		<title>Configuration &#8211; Multi-Level Configuration Sections using System.Configuration</title>
		<link>http://sblanco.wordpress.com/2011/02/03/configuration-multi-level-configuration-sections-using-system-configuration/</link>
		<comments>http://sblanco.wordpress.com/2011/02/03/configuration-multi-level-configuration-sections-using-system-configuration/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 01:22:40 +0000</pubDate>
		<dc:creator>Santiago Blanco</dc:creator>
				<category><![CDATA[Configuration]]></category>

		<guid isPermaLink="false">https://sblanco.wordpress.com/2011/02/03/configuration-multi-level-configuration-sections-using-system-configuration/</guid>
		<description><![CDATA[I’ve been trying to find examples or documentation on how to do this but practically all the examples I found where based on one or two level hierarchies, or on custom solutions to overcome the falsely perceived limitation. It turns out that the solution is simple but the lack of examples or documentation makes it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=67&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I’ve been trying to find examples or documentation on how to do this but practically all the examples I found where based on one or two level hierarchies, or on custom solutions to overcome the falsely perceived limitation. It turns out that the solution is simple but the lack of examples or documentation makes it not straightforward, so I’m posting the solution here.</p>
<p>This is a simplified version of the configuration hierarchy I needed for my configuration file:</p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:82037d6a-a77c-483c-a832-9b0b876a0a4e" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;overflow:auto;">
<ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;">
<li><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">ConfigurationSectionName</span><span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">  <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">SubSection1</span><span style="color:#0000ff;">&gt;</span></li>
<li>    <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">ItemsGroup</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">label</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Group1a</span>&#8220;<span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">  &lt;</span><span style="color:#a31515;">Item</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">title</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Title1</span>&#8220;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">command</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">commandName1</span>&#8220;<span style="color:#0000ff;">/&gt;</span></li>
<li>    <span style="color:#0000ff;">  &lt;</span><span style="color:#a31515;">Item</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">title</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Title2</span>&#8220;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">command</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">commandName2</span>&#8220;<span style="color:#0000ff;">/&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">ItemsGroup</span><span style="color:#0000ff;">&gt;</span></li>
<li>    <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">ItemsGroup</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">label</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Group1b</span>&#8220;<span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">  &lt;</span><span style="color:#a31515;">Item</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">title</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Title1</span>&#8220;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">command</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">commandName1</span>&#8220;<span style="color:#0000ff;">/&gt;</span></li>
<li>    <span style="color:#0000ff;">  &lt;</span><span style="color:#a31515;">Item</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">title</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Title2</span>&#8220;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">command</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">commandName2</span>&#8220;<span style="color:#0000ff;">/&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">ItemsGroup</span><span style="color:#0000ff;">&gt;</span></li>
<li>  <span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">SubSection1</span><span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">  <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">SubSection2</span><span style="color:#0000ff;">&gt;</span></li>
<li>    <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">ItemsGroup</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">label</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Group2a</span>&#8220;<span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">  &lt;</span><span style="color:#a31515;">Item</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">title</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Title1</span>&#8220;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">command</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">commandName1</span>&#8220;<span style="color:#0000ff;">/&gt;</span></li>
<li>    <span style="color:#0000ff;">  &lt;</span><span style="color:#a31515;">Item</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">title</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Title2</span>&#8220;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">command</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">commandName2</span>&#8220;<span style="color:#0000ff;">/&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">ItemsGroup</span><span style="color:#0000ff;">&gt;</span></li>
<li>    <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">ItemsGroup</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">label</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Group2b</span>&#8220;<span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">  &lt;</span><span style="color:#a31515;">Item</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">title</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Title1</span>&#8220;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">command</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">commandName1</span>&#8220;<span style="color:#0000ff;">/&gt;</span></li>
<li>    <span style="color:#0000ff;">  &lt;</span><span style="color:#a31515;">Item</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">title</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">Title2</span>&#8220;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">command</span><span style="color:#0000ff;">=</span>&#8220;<span style="color:#0000ff;">commandName2</span>&#8220;<span style="color:#0000ff;">/&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">ItemsGroup</span><span style="color:#0000ff;">&gt;</span></li>
<li>  <span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">SubSection2</span><span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;"><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">ConfigurationSectionName</span><span style="color:#0000ff;">&gt;</span></li>
</ol>
</div>
</div>
</div>
<p> </p>
<p>First, we need to create a ConfigurationSection derived class to act as the root of the configuration hierarchy and as the config handler on the application config file.</p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0ab54f0d-e4b2-4c8f-9a4b-4c3fcbfe7be8" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;overflow:auto;">
<ol style="background:#ffffff;white-space:nowrap;margin:0 0 0 2.5em;padding:0 0 0 5px;">
<li><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> <span style="color:#2b91af;">MyConfigurationSection</span> : <span style="color:#2b91af;">ConfigurationSection</span></li>
<li style="background:#f3f3f3;">{</li>
<li> </li>
<li style="background:#f3f3f3;">    <span style="color:#008000;">// Declare a collection element represented in the configuration file by the sub-section</span></li>
<li>    <span style="color:#008000;">// &lt;SubSection1&gt; &lt;add &#8230;/&gt; &lt;/SubSection1&gt; </span></li>
<li style="background:#f3f3f3;">    <span style="color:#008000;">// Note: the &#8220;IsDefaultCollection = false&#8221; instructs the .NET Framework to build a nested section like &lt;SubSection1&gt; &#8230;&lt;/SubSection1&gt;.</span></li>
<li>    [<span style="color:#2b91af;">ConfigurationProperty</span>( <span style="color:#a31515;">"SubSection1"</span>, IsDefaultCollection = <span style="color:#0000ff;">false</span> )]</li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">public</span> <span style="color:#2b91af;">SubSectionConfigElement</span> SubSection1ItemGroups</li>
<li>    {</li>
<li style="background:#f3f3f3;">        <span style="color:#0000ff;">get</span></li>
<li>        {</li>
<li style="background:#f3f3f3;">            <span style="color:#2b91af;">SubSectionConfigElement</span> subSection1ConfigElement = (<span style="color:#2b91af;">SubSectionConfigElement</span>)<span style="color:#0000ff;">base</span>[ <span style="color:#a31515;">"SubSection1"</span> ];</li>
<li>            <span style="color:#0000ff;">return</span> subSection1ConfigElement;</li>
<li style="background:#f3f3f3;">        }</li>
<li>    }</li>
<li style="background:#f3f3f3;"> </li>
<li> </li>
<li style="background:#f3f3f3;">    [<span style="color:#2b91af;">ConfigurationProperty</span>( <span style="color:#a31515;">"SubSection2"</span>, IsDefaultCollection = <span style="color:#0000ff;">false</span> )]</li>
<li>    <span style="color:#0000ff;">public</span> <span style="color:#2b91af;">SubSectionConfigElement</span> SubSection2ItemGroups</li>
<li style="background:#f3f3f3;">    {</li>
<li>        <span style="color:#0000ff;">get</span></li>
<li style="background:#f3f3f3;">        {</li>
<li>            <span style="color:#2b91af;">SubSectionConfigElement</span> subSection2ConfigElement = (<span style="color:#2b91af;">SubSectionConfigElement</span>)<span style="color:#0000ff;">base</span>[ <span style="color:#a31515;">"SubSection2"</span> ];</li>
<li style="background:#f3f3f3;">            <span style="color:#0000ff;">return</span> subSection2ConfigElement;</li>
<li>        }</li>
<li style="background:#f3f3f3;">    }</li>
<li> </li>
<li style="background:#f3f3f3;">}</li>
</ol>
</div>
</div>
</div>
<p>Each property on the ConfigurationSection class corresponds to one of the subsections on the main configuration section.</p>
<p>The trick to allow more sublevels here, is to derive the SubSectionConfigElement class from ConfigurationElementCollection instead of ConfigurationElement and to populate the AddElementName property with the name of the XML element on our config file, in this case ItemsGroup.</p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4c52611f-9531-4139-8867-640456549a12" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;overflow:auto;">
<ol style="background:#ffffff;white-space:nowrap;margin:0 0 0 2.5em;padding:0 0 0 5px;">
<li><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> <span style="color:#2b91af;">SubSectionConfigElement</span> : <span style="color:#2b91af;">ConfigurationElementCollection</span></li>
<li style="background:#f3f3f3;">{</li>
<li> </li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">public</span> SubSectionConfigElement()</li>
<li>    {</li>
<li style="background:#f3f3f3;">        AddElementName = <span style="color:#a31515;">&#8220;ItemsGroup&#8221;</span>;</li>
<li>    }</li>
<li style="background:#f3f3f3;"> </li>
<li>    <span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">override</span> <span style="color:#2b91af;">ConfigurationElement</span> CreateNewElement()</li>
<li style="background:#f3f3f3;">    {</li>
<li>        <span style="color:#0000ff;">return</span> <span style="color:#0000ff;">new</span> <span style="color:#2b91af;">ItemsGroupConfigElement</span>();</li>
<li style="background:#f3f3f3;">    }</li>
<li> </li>
<li style="background:#f3f3f3;"> </li>
<li>    <span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">override</span> <span style="color:#2b91af;">Object</span> GetElementKey( <span style="color:#2b91af;">ConfigurationElement</span> element )</li>
<li style="background:#f3f3f3;">    {</li>
<li>        <span style="color:#0000ff;">return</span> ((<span style="color:#2b91af;">ItemsGroupConfigElement</span>)element).Label;</li>
<li style="background:#f3f3f3;">    }</li>
<li> </li>
<li style="background:#f3f3f3;">}</li>
</ol>
</div>
</div>
</div>
<p> </p>
<p>To support another level on the hierarchy, we derive the class returned by the CreateNewElement() method (ItemsGroupConfigElement) from the ConfigurationElementCollection. This doesn’t prevent us from also adding properties to the class that are going to be represented as attributes in the XML file.</p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3fcd94c1-ba02-4b9f-b253-86708dd2944a" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;overflow:auto;">
<ol style="background:#ffffff;white-space:nowrap;margin:0 0 0 2.5em;padding:0 0 0 5px;">
<li><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> <span style="color:#2b91af;">ItemsGroupConfigElement</span> : <span style="color:#2b91af;">ConfigurationElementCollection</span></li>
<li style="background:#f3f3f3;">{</li>
<li> </li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">public</span> ItemsGroupConfigElement()</li>
<li>    {</li>
<li style="background:#f3f3f3;">        AddElementName = <span style="color:#a31515;">&#8220;Item&#8221;</span>;</li>
<li>    }</li>
<li style="background:#f3f3f3;"> </li>
<li>    [<span style="color:#2b91af;">ConfigurationProperty</span>( <span style="color:#a31515;">"label"</span>, IsRequired = <span style="color:#0000ff;">true</span>, IsKey = <span style="color:#0000ff;">true</span> )]</li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">string</span> Label</li>
<li>    {</li>
<li style="background:#f3f3f3;">        <span style="color:#0000ff;">get</span></li>
<li>        {</li>
<li style="background:#f3f3f3;">            <span style="color:#0000ff;">return</span> (<span style="color:#0000ff;">string</span>)<span style="color:#0000ff;">this</span>[ <span style="color:#a31515;">"label"</span> ];</li>
<li>        }</li>
<li style="background:#f3f3f3;">        <span style="color:#0000ff;">set</span></li>
<li>        {</li>
<li style="background:#f3f3f3;">            <span style="color:#0000ff;">this</span>[ <span style="color:#a31515;">"label"</span> ] = <span style="color:#0000ff;">value</span>;</li>
<li>        }</li>
<li style="background:#f3f3f3;">    }</li>
<li> </li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">override</span> <span style="color:#2b91af;">ConfigurationElement</span> CreateNewElement()</li>
<li>    {</li>
<li style="background:#f3f3f3;">        <span style="color:#0000ff;">return</span> <span style="color:#0000ff;">new</span> <span style="color:#2b91af;">ItemConfigElement</span>();</li>
<li>    }</li>
<li style="background:#f3f3f3;"> </li>
<li>    <span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">override</span> <span style="color:#2b91af;">Object</span> GetElementKey( <span style="color:#2b91af;">ConfigurationElement</span> element )</li>
<li style="background:#f3f3f3;">    {</li>
<li>        <span style="color:#0000ff;">return</span> ((<span style="color:#2b91af;">ItemConfigElement</span>)element).Title;</li>
<li style="background:#f3f3f3;">    }</li>
<li>}</li>
</ol>
</div>
</div>
</div>
<p> </p>
<p>We again populate the AddElementName with the name of the child elements on the XML file and return last element of the hierarchy (ItemConfigElement), which derives directly from ConfigurationElement.</p>
<div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:aa2cd8fb-fe33-44d9-8f3f-b2ee074956c9" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;overflow:auto;">
<ol style="background:#ffffff;white-space:nowrap;margin:0 0 0 2.5em;padding:0 0 0 5px;">
<li><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> <span style="color:#2b91af;">ItemConfigElement</span> : <span style="color:#2b91af;">ConfigurationElement</span></li>
<li style="background:#f3f3f3;">{</li>
<li> </li>
<li style="background:#f3f3f3;">    [<span style="color:#2b91af;">ConfigurationProperty</span>( <span style="color:#a31515;">"title"</span>, IsRequired = <span style="color:#0000ff;">true</span>, IsKey = <span style="color:#0000ff;">true</span> )]</li>
<li>    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">string</span> Title</li>
<li style="background:#f3f3f3;">    {</li>
<li>        <span style="color:#0000ff;">get</span></li>
<li style="background:#f3f3f3;">        {</li>
<li>            <span style="color:#0000ff;">return</span> (<span style="color:#0000ff;">string</span>)<span style="color:#0000ff;">this</span>[ <span style="color:#a31515;">"title"</span> ];</li>
<li style="background:#f3f3f3;">        }</li>
<li>        <span style="color:#0000ff;">set</span></li>
<li style="background:#f3f3f3;">        {</li>
<li>            <span style="color:#0000ff;">this</span>[ <span style="color:#a31515;">"title"</span> ] = <span style="color:#0000ff;">value</span>;</li>
<li style="background:#f3f3f3;">        }</li>
<li>    }</li>
<li style="background:#f3f3f3;"> </li>
<li>    [<span style="color:#2b91af;">ConfigurationProperty</span>( <span style="color:#a31515;">"command"</span> )]</li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">string</span> Command</li>
<li>    {</li>
<li style="background:#f3f3f3;">        <span style="color:#0000ff;">get</span></li>
<li>        {</li>
<li style="background:#f3f3f3;">            <span style="color:#0000ff;">return</span> (<span style="color:#0000ff;">string</span>)<span style="color:#0000ff;">this</span>[ <span style="color:#a31515;">"command"</span> ];</li>
<li>        }</li>
<li style="background:#f3f3f3;">        <span style="color:#0000ff;">set</span></li>
<li>        {</li>
<li style="background:#f3f3f3;">            <span style="color:#0000ff;">this</span>[ <span style="color:#a31515;">"command"</span> ] = <span style="color:#0000ff;">value</span>;</li>
<li>        }</li>
<li style="background:#f3f3f3;">    }</li>
<li>}</li>
</ol>
</div>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sblanco.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sblanco.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sblanco.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sblanco.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sblanco.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sblanco.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sblanco.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sblanco.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sblanco.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sblanco.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sblanco.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sblanco.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sblanco.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sblanco.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=67&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sblanco.wordpress.com/2011/02/03/configuration-multi-level-configuration-sections-using-system-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/043c475d8769e4089a798ad84b681e40?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sblancoleis</media:title>
		</media:content>
	</item>
		<item>
		<title>WPF &#8211; Bind TreeView SelectedItem to a property on the ViewModel</title>
		<link>http://sblanco.wordpress.com/2010/12/15/wpf-bind-treeview-selecteditem-to-a-property-on-the-viewmodel/</link>
		<comments>http://sblanco.wordpress.com/2010/12/15/wpf-bind-treeview-selecteditem-to-a-property-on-the-viewmodel/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 21:59:44 +0000</pubDate>
		<dc:creator>Santiago Blanco</dc:creator>
				<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">https://sblanco.wordpress.com/2010/12/15/wpf-bind-treeview-selecteditem-to-a-property-on-the-viewmodel/</guid>
		<description><![CDATA[The TreeView control doesn’t have a bindable SelectedItem property (it is ReadOnly) that allows binding the selected tree item to a property on the ViewModel or Presenter. One solution for one-way notification is to add an event-handler to the SelectedItemChanged event on the code-behind file: private void TreeView_SelectedItemChanged( object sender, RoutedPropertyChangedEventArgs&#60;object&#62; e ) {     SomeDialogPresenter [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=61&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The TreeView control doesn’t have a bindable SelectedItem property (it is ReadOnly) that allows binding the selected tree item to a property on the ViewModel or Presenter.</p>
<p>One solution for one-way notification is to add an event-handler to the SelectedItemChanged event on the code-behind file:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2e983ca1-8d51-44bd-91ad-8441fb20334c" class="wlWriterEditableSmartContent">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;overflow:auto;">
<ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;">
<li><span style="color:#0000ff;">private</span> <span style="color:#0000ff;">void</span> TreeView_SelectedItemChanged( <span style="color:#0000ff;">object</span> sender, RoutedPropertyChangedEventArgs&lt;<span style="color:#0000ff;">object</span>&gt; e )</li>
<li style="background:#f3f3f3;">{</li>
<li>    SomeDialogPresenter presenter = <span style="color:#0000ff;">this</span>.DataContext <span style="color:#0000ff;">as</span> SomeDialogPresenter;</li>
<li style="background:#f3f3f3;">    presenter.SelectedTreeItem = e.NewValue;</li>
<li>}</li>
</ol></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>but this doesn’t allow to change the selected item programmatically.</p>
<p>Other solution is to implement an “IsSelected” property on the Adapter/ViewModel that gets bound to each TreeNode and bind that property to the “IsSelected” property on the TreeViewItem using a Style:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:ed584b8e-a5ab-495c-9225-8a6d457d6f7d" class="wlWriterEditableSmartContent">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;overflow:auto;">
<ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;">
<li><span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">TreeView</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">ItemsSource</span><span style="color:#0000ff;">=</span>&quot;{<span style="color:#0000ff;">Binding ItemsSourceOnThePresenter}</span>&quot;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">SelectedItemChanged</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">TreeView_SelectedItemChanged</span>&quot;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">Margin</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">5,10</span>&quot;<span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">  <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">TreeView.ItemContainerStyle</span><span style="color:#0000ff;">&gt;</span></li>
<li>    <span style="color:#0000ff;">&lt;</span><span style="color:#a31515;">Style</span><span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">  &lt;</span><span style="color:#a31515;">Setter</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">Property</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">TreeViewItem.IsSelected</span>&quot;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">Value</span><span style="color:#0000ff;">=</span>&quot;{<span style="color:#0000ff;">Binding IsSelected, Mode=TwoWay}</span>&quot;<span style="color:#0000ff;"> /&gt;</span></li>
<li>    <span style="color:#0000ff;">  &lt;</span><span style="color:#a31515;">Setter</span><span style="color:#0000ff;"> </span><span style="color:#ff0000;">Property</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">TreeViewItem.IsExpanded</span>&quot;<span style="color:#0000ff;"> </span><span style="color:#ff0000;">Value</span><span style="color:#0000ff;">=</span>&quot;<span style="color:#0000ff;">True</span>&quot;<span style="color:#0000ff;">/&gt;</span></li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">Style</span><span style="color:#0000ff;">&gt;</span></li>
<li>  <span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">TreeView.ItemContainerStyle</span><span style="color:#0000ff;">&gt;</span></li>
<li style="background:#f3f3f3;"><span style="color:#0000ff;">&lt;/</span><span style="color:#a31515;">TreeView</span><span style="color:#0000ff;">&gt;</span></li>
</ol></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>On the Adapter/ViewModel (that implements INotifyPropertyChanged):</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:61b12977-3a0c-4cb9-b912-741afbbb0f83" class="wlWriterEditableSmartContent">
<div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;">
<div style="background:#ddd;overflow:auto;">
<ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;">
<li><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">bool</span> IsSelected</li>
<li style="background:#f3f3f3;">{</li>
<li>    <span style="color:#0000ff;">get</span> { <span style="color:#0000ff;">return</span> m_isSelected; }</li>
<li style="background:#f3f3f3;">    <span style="color:#0000ff;">set</span></li>
<li>    {</li>
<li style="background:#f3f3f3;">        m_isSelected = value;</li>
<li>        OnPropertyChanged( <span style="color:#a31515;">&quot;IsSelected&quot;</span> );</li>
<li style="background:#f3f3f3;">    }</li>
<li>}</li>
</ol></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Then on the view presenter you can set the property on the node ViewModel and the node gets selected on the tree control.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sblanco.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sblanco.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sblanco.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sblanco.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sblanco.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sblanco.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sblanco.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sblanco.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sblanco.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sblanco.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sblanco.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sblanco.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sblanco.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sblanco.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=61&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sblanco.wordpress.com/2010/12/15/wpf-bind-treeview-selecteditem-to-a-property-on-the-viewmodel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/043c475d8769e4089a798ad84b681e40?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sblancoleis</media:title>
		</media:content>
	</item>
		<item>
		<title>PRISM 4</title>
		<link>http://sblanco.wordpress.com/2010/11/16/prism-4/</link>
		<comments>http://sblanco.wordpress.com/2010/11/16/prism-4/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 16:13:39 +0000</pubDate>
		<dc:creator>Santiago Blanco</dc:creator>
				<category><![CDATA[PRISM]]></category>

		<guid isPermaLink="false">https://sblanco.wordpress.com/2010/11/16/prism-4/</guid>
		<description><![CDATA[Prism 4 was released on November 12th. Here are the links to the official sites: http://compositewpf.codeplex.com/ Prism 4.0 &#8211; November 2010<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=60&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Prism 4 was released on November 12th. Here are the links to the official sites:</p>
<p><a title="http://compositewpf.codeplex.com/" href="http://compositewpf.codeplex.com/">http://compositewpf.codeplex.com/</a></p>
<p><a title="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3453ab2b-2067-41e4-b087-312d8385cf1b&amp;displaylang=en" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3453ab2b-2067-41e4-b087-312d8385cf1b&amp;displaylang=en">Prism 4.0 &#8211; November 2010</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sblanco.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sblanco.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sblanco.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sblanco.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sblanco.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sblanco.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sblanco.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sblanco.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sblanco.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sblanco.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sblanco.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sblanco.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sblanco.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sblanco.wordpress.com/60/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=60&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sblanco.wordpress.com/2010/11/16/prism-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/043c475d8769e4089a798ad84b681e40?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sblancoleis</media:title>
		</media:content>
	</item>
		<item>
		<title>Upgrading existing VS2008 WSSF solutions to VS2010</title>
		<link>http://sblanco.wordpress.com/2010/07/08/upgrading-existing-vs2008-wssf-solutions-to-vs2010/</link>
		<comments>http://sblanco.wordpress.com/2010/07/08/upgrading-existing-vs2008-wssf-solutions-to-vs2010/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 18:46:15 +0000</pubDate>
		<dc:creator>Santiago Blanco</dc:creator>
				<category><![CDATA[WSSF]]></category>

		<guid isPermaLink="false">https://sblanco.wordpress.com/2010/07/08/upgrading-existing-vs2008-wssf-solutions-to-vs2010/</guid>
		<description><![CDATA[I’ve found the solution here (thanks to AndyFurnival) and it worked fine for me after I checked out the .ssfproject project from source control before I opened the solution from VS2010. These are the steps from the link above with a couple of additions: Backup your project files. Open the solution on VS2008 and check [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=59&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I’ve found the solution <a href="http://servicefactory.codeplex.com/Thread/View.aspx?ThreadId=211726">here</a> (thanks to AndyFurnival) and it worked fine for me after I checked out the .ssfproject project from source control before I opened the solution from VS2010.</p>
<p>These are the steps from the link above with a couple of additions:</p>
<ol>
<li>Backup your project files. </li>
<li>Open the solution on VS2008 and check out all the files. Close VS008. </li>
<li>Open the solution on VS2010 and follow the solution upgrade wizard. </li>
<li>Remove the *.ssfproject from your solution. </li>
<li>Rename the ssfproject file extension to a csproj extension (assuming you are using C#) </li>
<li>Add the project back into your solution. </li>
<li>Click Tools -&gt; Guidance Package Manager in VS 2010 IDE, and Click Enable Packages, and then Check Web Service Software Factory 2010 beta. Press OK (unless it is already enabled) </li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sblanco.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sblanco.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sblanco.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sblanco.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sblanco.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sblanco.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sblanco.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sblanco.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sblanco.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sblanco.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sblanco.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sblanco.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sblanco.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sblanco.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=59&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sblanco.wordpress.com/2010/07/08/upgrading-existing-vs2008-wssf-solutions-to-vs2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/043c475d8769e4089a798ad84b681e40?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sblancoleis</media:title>
		</media:content>
	</item>
		<item>
		<title>BizTalk 2009 &#8211; Cannot create new BizTalk projects in Visual Studio 2008</title>
		<link>http://sblanco.wordpress.com/2010/05/06/biztalk-2009-cannot-create-new-biztalk-projects-in-visual-studio-2008/</link>
		<comments>http://sblanco.wordpress.com/2010/05/06/biztalk-2009-cannot-create-new-biztalk-projects-in-visual-studio-2008/#comments</comments>
		<pubDate>Thu, 06 May 2010 19:32:43 +0000</pubDate>
		<dc:creator>Santiago Blanco</dc:creator>
				<category><![CDATA[BizTalk 2009]]></category>

		<guid isPermaLink="false">https://sblanco.wordpress.com/2010/05/06/biztalk-2009-cannot-create-new-biztalk-projects-in-visual-studio-2008/</guid>
		<description><![CDATA[Today I was trying to create a new BizTalk solution on VS2008 using the BizTalk Software Factory and I kept getting an exception. Then I realized that I wasn’t able to create new BizTalk projects either and I found this solution online: Known Issues When Developing BizTalk Server Applications After making the registry change everything [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=57&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I was trying to create a new BizTalk solution on VS2008 using the BizTalk Software Factory and I kept getting an exception. Then I realized that I wasn’t able to create new BizTalk projects either and I found this solution online:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/ee449462(BTS.10).aspx">Known Issues When Developing BizTalk Server Applications</a></p>
<p>After making the registry change everything went back to normal.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sblanco.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sblanco.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sblanco.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sblanco.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sblanco.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sblanco.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sblanco.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sblanco.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sblanco.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sblanco.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sblanco.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sblanco.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sblanco.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sblanco.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=57&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sblanco.wordpress.com/2010/05/06/biztalk-2009-cannot-create-new-biztalk-projects-in-visual-studio-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/043c475d8769e4089a798ad84b681e40?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sblancoleis</media:title>
		</media:content>
	</item>
		<item>
		<title>BizTalk 2009 &#8211; Toolkits and Frameworks</title>
		<link>http://sblanco.wordpress.com/2010/04/30/biztalk-2009-toolkits-and-frameworks/</link>
		<comments>http://sblanco.wordpress.com/2010/04/30/biztalk-2009-toolkits-and-frameworks/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 14:31:16 +0000</pubDate>
		<dc:creator>Santiago Blanco</dc:creator>
				<category><![CDATA[BizTalk 2009]]></category>

		<guid isPermaLink="false">https://sblanco.wordpress.com/2010/04/30/biztalk-2009-toolkits-and-frameworks/</guid>
		<description><![CDATA[These are a few links to useful resources for building BizTalk applications: BizTalk ESB Toolkit 2.0 Deployment Framework for BizTalk v5.0 BizTalk Software Factory v2.1 BizUnit v3.1 MSDN Technical Articles<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=52&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>These are a few links to useful resources for building BizTalk applications:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/biztalk/dd876606.aspx">BizTalk ESB Toolkit 2.0</a> </li>
<li><a href="http://biztalkdeployment.codeplex.com/">Deployment Framework for BizTalk v5.0</a> </li>
<li><a href="http://bsf.codeplex.com/releases/view/41007">BizTalk Software Factory v2.1</a> </li>
<li><a href="http://bizunit.codeplex.com/">BizUnit v3.1</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/ee317853(v=BTS.10).aspx">MSDN Technical Articles</a> </li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sblanco.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sblanco.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sblanco.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sblanco.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sblanco.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sblanco.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sblanco.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sblanco.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sblanco.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sblanco.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sblanco.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sblanco.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sblanco.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sblanco.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=52&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sblanco.wordpress.com/2010/04/30/biztalk-2009-toolkits-and-frameworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/043c475d8769e4089a798ad84b681e40?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sblancoleis</media:title>
		</media:content>
	</item>
		<item>
		<title>LINQ &#8211; How to find the object with the largest value on one of its properties</title>
		<link>http://sblanco.wordpress.com/2010/03/10/linq-how-to-find-the-object-with-the-largest-value-on-one-of-its-properties/</link>
		<comments>http://sblanco.wordpress.com/2010/03/10/linq-how-to-find-the-object-with-the-largest-value-on-one-of-its-properties/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 02:42:31 +0000</pubDate>
		<dc:creator>Santiago Blanco</dc:creator>
				<category><![CDATA[LINQ]]></category>

		<guid isPermaLink="false">http://sblanco.wordpress.com/2010/03/10/linq-how-to-find-the-object-with-the-largest-value-on-one-of-its-properties/</guid>
		<description><![CDATA[The first thing to remember when using LINQ to Objects methods is to add the namespace System.Linq to the list of using statements in our class. This allows us to use the extension methods for IEnumerable&#60;T&#62; defined on that namespace. Most of the examples I found related to this were using arrays of ints and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=48&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The first thing to remember when using LINQ to Objects methods is to add the namespace <em>System.Linq</em> to the list of <em>using</em> statements in our class. This allows us to use the extension methods for <font color="#0080c0">IEnumerable</font>&lt;T&gt; defined on that namespace. </p>
<p>Most of the examples I found related to this were using arrays of ints and the Max() method but that gives you the largest value found, not the object that contains that value.</p>
<p>Let’s assume we have a list of CampaignInfoData objects that have one property named NumberOfBatches of type int.</p>
<p align="left"><font size="2"><font face="Courier New"><font color="#0080c0">private</font> <font color="#0080c0">List</font>&lt;<font color="#0080c0">CampaignInfoData</font>&gt; m_campaignInfosList = new <font color="#0080c0">List</font>&lt;<font color="#0080c0">CampaignInfoData</font>&gt;();</font></font></p>
<p>Using the Max method, we can get the largest number of batches in one campaign:</p>
<p align="left"><font size="2"><font face="Courier New"><font color="#0080c0">int</font> largestNumberOfBatches = m_campaignInfosList.Max( f =&gt; f.NumberOfBatches );</font></font></p>
<p>but what I wanted was to get the campaign object with the largest number of batches. To get that, we can use the Aggregate method:</p>
<p align="left"><font size="2"><font face="Courier New"><font color="#0080c0">CampaignInfoData</font> largestCampaign = m_campaignInfosList.Aggregate( ( seed, f ) =&gt; f.NumberOfBatches &gt; seed.NumberOfBatches ? f : seed );</font></font></p>
<p>The Aggregate method accepts a lambda expression with two parameters. The first parameter holds the result of the previous lambda function execution, and the second is the current item on the list at a specific point in time.</p>
<p>The method traverses the list from beginning to end, and for each element, executes the code to the right of the =&gt; symbol on the lambda expression. After that, it puts the result value on the first parameter (seed) and moves to the next element on the list. </p>
<p>When it reaches the last element, the Aggregate method returns the result of the last lambda function execution.</p>
<p>This gives us the campaign object we were looking for without affecting the order of the elements on the list.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sblanco.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sblanco.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sblanco.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sblanco.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sblanco.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sblanco.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sblanco.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sblanco.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sblanco.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sblanco.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sblanco.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sblanco.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sblanco.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sblanco.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=48&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sblanco.wordpress.com/2010/03/10/linq-how-to-find-the-object-with-the-largest-value-on-one-of-its-properties/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/043c475d8769e4089a798ad84b681e40?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sblancoleis</media:title>
		</media:content>
	</item>
		<item>
		<title>WPF custom ListBox with scrollbar on the background.</title>
		<link>http://sblanco.wordpress.com/2010/03/08/wpf-custom-listbox-with-scrollbar-in-the-background/</link>
		<comments>http://sblanco.wordpress.com/2010/03/08/wpf-custom-listbox-with-scrollbar-in-the-background/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 04:42:27 +0000</pubDate>
		<dc:creator>Santiago Blanco</dc:creator>
				<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://sblanco.wordpress.com/2010/03/08/wpf-custom-listbox-with-scrollbar-in-the-background/</guid>
		<description><![CDATA[I just posted an article on CodeProject explaining how to create a custom ListBox using Styles: http://www.codeproject.com/KB/WPF/AutoScrollListBox.aspx You can download the sample code from there.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=46&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just posted an article on CodeProject explaining how to create a custom ListBox using Styles:</p>
<p><a title="http://www.codeproject.com/KB/WPF/AutoScrollListBox.aspx" href="http://www.codeproject.com/KB/WPF/AutoScrollListBox.aspx">http://www.codeproject.com/KB/WPF/AutoScrollListBox.aspx</a></p>
<p>You can download the sample code from there.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sblanco.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sblanco.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sblanco.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sblanco.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sblanco.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sblanco.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sblanco.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sblanco.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sblanco.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sblanco.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sblanco.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sblanco.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sblanco.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sblanco.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=46&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sblanco.wordpress.com/2010/03/08/wpf-custom-listbox-with-scrollbar-in-the-background/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/043c475d8769e4089a798ad84b681e40?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sblancoleis</media:title>
		</media:content>
	</item>
		<item>
		<title>Enterprise Library 5.0 Beta1 and Unity 2.0 Beta1 are released</title>
		<link>http://sblanco.wordpress.com/2010/02/16/enterprise-library-5-0-beta1-and-unity-2-0-beta1-are-released/</link>
		<comments>http://sblanco.wordpress.com/2010/02/16/enterprise-library-5-0-beta1-and-unity-2-0-beta1-are-released/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 21:53:18 +0000</pubDate>
		<dc:creator>Santiago Blanco</dc:creator>
				<category><![CDATA[Enterprise Library]]></category>

		<guid isPermaLink="false">http://sblanco.wordpress.com/2010/02/16/enterprise-library-5-0-beta1-and-unity-2-0-beta1-are-released/</guid>
		<description><![CDATA[The Patterns &#38; Practices team has released beta versions of both libraries: http://entlib.codeplex.com/wikipage?title=EntLib5%20Beta1<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=45&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The Patterns &amp; Practices team has released beta versions of both libraries:</p>
<p><a title="http://entlib.codeplex.com/wikipage?title=EntLib5%20Beta1" href="http://entlib.codeplex.com/wikipage?title=EntLib5%20Beta1">http://entlib.codeplex.com/wikipage?title=EntLib5%20Beta1</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sblanco.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sblanco.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sblanco.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sblanco.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sblanco.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sblanco.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sblanco.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sblanco.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sblanco.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sblanco.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sblanco.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sblanco.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sblanco.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sblanco.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sblanco.wordpress.com&amp;blog=10743522&amp;post=45&amp;subd=sblanco&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sblanco.wordpress.com/2010/02/16/enterprise-library-5-0-beta1-and-unity-2-0-beta1-are-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/043c475d8769e4089a798ad84b681e40?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sblancoleis</media:title>
		</media:content>
	</item>
	</channel>
</rss>
