<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>I really don't think, but I think I'm right</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/xtof/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/xtof/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:35:45 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Generating C# from Visual Studio Code Model</title>
      <link>https://docs.microsoft.com/archive/blogs/xtof/generating-c-from-visual-studio-code-model</link>
      <pubDate>Mon, 08 Mar 2010 19:12:00 GMT</pubDate>
      <dc:creator><![CDATA[xtof]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xtof/2010/03/08/generating-c-from-visual-studio-code-model/</guid>
      <description><![CDATA[In my recent project I had had the chance to use T4 (text template transformation toolkit) and...]]></description>
      <content:encoded><![CDATA[<P>In my recent project I had had the chance to use T4 (text template transformation toolkit) and learned to like it. While trying to come up with ideas for demonstrating in-product guidance I discovered that it is fairly easy to let Visual Studio generate code based on code that is in a different file in VS. This might sound confusing but I think this has a lot of potential and is fairly easy to write.</P>
<P>Here is a scenario: For WPF and Silverlight it is pretty much standard these days to write a ViewModel class that encapsulates a Model class in a way that makes WPF/Silverlight databinding easier and adds additional properties that are only relevant to the view. One way is to implement INotifyPropertyChanged in the ViewModel. For a class:</P>
<P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none"><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">Customer</SPAN>&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">string</SPAN> Email { <SPAN style="COLOR: blue">get</SPAN>; <SPAN style="COLOR: blue">set</SPAN>; }&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// ...</SPAN>&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>} </SPAN>
<P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal>you write a corresponding ViewModel class</P>
<P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">partial</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">CustomerViewModel</SPAN> : <SPAN style="COLOR: #2b91af">INotifyPropertyChanged</SPAN>&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> CustomerViewModel(<SPAN style="COLOR: #2b91af">Customer</SPAN> modelElement)&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">this</SPAN>._modelElement = modelElement;&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}&nbsp; <BR><BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">readonly</SPAN> <SPAN style="COLOR: #2b91af">Customer</SPAN> _modelElement;&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">string</SPAN> Email&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">get</SPAN> { <SPAN style="COLOR: blue">return</SPAN> _modelElement.Email; }&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">set</SPAN>&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN>(<SPAN style="COLOR: blue">value</SPAN> != Email)&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Email = <SPAN style="COLOR: blue">value</SPAN>;&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>OnPropertyChanged(<SPAN style="COLOR: #a31515">"Email"</SPAN>);&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// ...</SPAN>&nbsp; <BR></SPAN><SPAN style="FONT-FAMILY: consolas; FONT-SIZE: 9.5pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>} </SPAN></P>
<P>Pretty tedious. </P>
<P>With T4 and the Visual Studio Code Model you can read the properties of the Model class (Customer in our example) and generate the ViewModel wrapper. Here is roughly what I do, a running Visual Studio 2010 RC project is attached.</P>
<P>To get to the data (= the code in the other file) you write a small code block in the T4 file.</P>
<P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN>ProjectItem inputProjectItem = DTE.Solution.FindProjectItem(inputFileName); <BR></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>FileCodeModel codeModel = inputProjectItem.FileCodeModel; <BR></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>CodeClass modelClass = FindCodeElement&lt;CodeClass&gt;(codeModel.CodeElements);</SPAN></P>
<P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal>All the methods are in VS libraries except FindCodeElement&lt;T&gt; . It basically traverses the hierarchy that is created by the CodeElement.Children property and finds the first type that matches. In our case it is a <A href="https://msdn.microsoft.com/en-us/library/envdte.codeclass(VS.80).aspx" mce_href="https://msdn.microsoft.com/en-us/library/envdte.codeclass(VS.80).aspx">CodeClass</A> . CodeClass has a property called Members that returns a list that contains <A href="https://msdn.microsoft.com/en-us/library/envdte.codeproperty(VS.80).aspx" mce_href="https://msdn.microsoft.com/en-us/library/envdte.codeproperty(VS.80).aspx">CodeProperty</A> instances. </P>
<P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt">&lt;#&nbsp; </SPAN><FONT color=#000000><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt">foreach</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt">(CodeProperty prop </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt">in</SPAN></FONT><FONT size=2><FONT face="Courier New"><SPAN> modelClass.Members) <BR>&nbsp;&nbsp;&nbsp; { #&gt; <BR></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"><SPAN style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></FONT></FONT><FONT size=2><FONT face="Courier New"><SPAN><FONT color=#000000>public</FONT> &lt;#= prop.Type.AsString #&gt; &lt;#= prop.Name #&gt; <BR><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{ <BR></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><FONT color=#000000><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt">get</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"> { </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt">return</SPAN></FONT></FONT></FONT><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"> _modelElement.&lt;#= prop.Name #&gt;; } <BR></SPAN><SPAN><SPAN style="mso-spacerun: yes"><FONT size=2 face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><FONT size=2><FONT face="Courier New"><FONT color=#000000>set <BR></FONT><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{&nbsp; <BR></FONT></FONT></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">&nbsp;</SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN><FONT size=2><FONT face="Courier New"><FONT color=#000000>if</FONT>(value != _modelElement.&lt;#= prop.Name #&gt;) <BR></FONT></FONT></SPAN><FONT size=2><FONT face="Courier New"><SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{ <BR><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _modelElement.</SPAN>&lt;#= prop.Name #&gt; = value; <BR></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>OnPropertyChanged(</SPAN><FONT color=#000000><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: maroon; FONT-SIZE: 10pt">"</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt">&lt;#= prop.Name #&gt;</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: maroon; FONT-SIZE: 10pt">"</SPAN></FONT></FONT></FONT><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt">); <BR></SPAN><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>} <BR></SPAN><FONT size=2><FONT face="Courier New"><SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>} <BR><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>} <BR></SPAN><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: black; FONT-SIZE: 10pt">&lt;#<SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </SPAN>} #&gt;</SPAN></FONT></FONT> 
<P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal>This is the core of the idea. In the <A href="https://xtof.members.winisp.net/download/GeneratingFromCodeModel.zip" mce_href="https://xtof.members.winisp.net/download/GeneratingFromCodeModel.zip">attached demo Solution</A> I also did a bit more around formatting and you will see the necessary references and imports . </P>
<P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal>This is obviously not complete. To make this ready for real use one would need to think about references between Model classes, access modifiers, methods, naming, namespaces and more. </P>
<P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-layout-grid-align: none" class=MsoNormal>Some more background info and inspiration can be found on <A href="https://blogs.msdn.com/garethj/archive/2009/09/25/dte-and-t4-better-together.aspx" mce_href="https://blogs.msdn.com/garethj/archive/2009/09/25/dte-and-t4-better-together.aspx">Gareth Jones' blog</A>. And <A href="https://www.scottlogic.co.uk/blog/colin/2009/08/declarative-dependency-property-definition-with-t4-dte/" mce_href="https://www.scottlogic.co.uk/blog/colin/2009/08/declarative-dependency-property-definition-with-t4-dte/">Colin Eberhardt</A> has a sophisticated solution and more complete that uses the same ideas.</P>]]></content:encoded>
    </item>
    <item>
      <title>MapReduce explained (using LINQ) :-)</title>
      <link>https://docs.microsoft.com/archive/blogs/xtof/mapreduce-explained-using-linq</link>
      <pubDate>Wed, 29 Oct 2008 13:37:51 GMT</pubDate>
      <dc:creator><![CDATA[xtof]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xtof/2008/10/29/mapreduce-explained-using-linq/</guid>
      <description><![CDATA[If you spend some time to understand LINQ then you will probably like this explanation what...]]></description>
      <content:encoded><![CDATA[<p>If you spend some time to understand LINQ then you will probably like this explanation what MapReduce does. </p>  <p><a href="https://research.microsoft.com/research/sv/DryadLINQ/">DryadLINQ</a> is a programming environment that does automatic parallelization and is based on LINQ. To describe the power of the framework the Microsoft Research Project page has some sample code that shows how to implement MapReduce</p>  <pre>public static IQueryable&lt;TResult&gt;
MapReduce&lt;TSource, TMap, TKey, TResult&gt;(this IQueryable&lt;TSource&gt; source,
                                        Expression&lt;Func&lt;TSource, TMap&gt;&gt; mapper,
                                        Expression&lt;Func&lt;TMap, TKey&gt;&gt; keySelector,
                                        Expression&lt;Func&lt;TKey, IEnumerable&lt;TMap&gt;, TResult&gt;&gt; reducer)
{
    return source.SelectMany(mapper).GroupBy(keySelector).Select(reducer);
}</pre>

<p>Isn’t that nice. The full power of functional programming :-) . And suddenly MapReduce makes sense. </p>

<p>Of course there is some heavy lifting going on internally. It also shows that the DryadLINQ thing is more general than an implementation that does MapReduce only. I love .NET :-)</p>]]></content:encoded>
    </item>
    <item>
      <title>Making sense of NotifyCollectionChangedEventArgs</title>
      <link>https://docs.microsoft.com/archive/blogs/xtof/making-sense-of-notifycollectionchangedeventargs</link>
      <pubDate>Sun, 10 Feb 2008 14:35:00 GMT</pubDate>
      <dc:creator><![CDATA[xtof]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xtof/2008/02/10/making-sense-of-notifycollectionchangedeventargs/</guid>
      <description><![CDATA[I really like Data Binding in WPF. Combined with the separation of Behavior and Appearance it is...]]></description>
      <content:encoded><![CDATA[<p>I really like Data Binding in WPF. Combined with the separation of Behavior and Appearance it is incredible powerful.</p>  <p>But from time to time you want to implement your own collection class and that poses a slight challenge because you need implement to INotifyCollectionChanged. This interface is used by the Data Binding mechanism to figure out if and what has changed in the collection it binds to.</p>  <p>The challenge that I had a few times is, to figure out how to call the constructor of NotifyCollectionChangedEventArgs. It has 11 (in words eleven) overloaded versions of the constructor. The first argument of all constructors are an enumeration that stated the change &quot;action&quot; NotifyCollectionChangedAction. That is the easy part, but what to do with the remaining parameters?</p>  <p>It is all documented in the MSDN Library but it is in the wrong order: for each constructor it tells you which action can be used. But you need know which constructor to use for a certain action. So I create the small table below. </p>  <p><style type="text/css">


.style1 {
	font-family: serif;
}</style>    <table class="" style="margin-left: 4.75pt; width: 650pt; border-collapse: collapse" cellspacing="0" cellpadding="0" width="867" border="0"><tbody>       <tr style="height: 15.75pt">         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 410pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15.75pt" valign="bottom" width="547">           <p style="margin-bottom: 0pt; line-height: normal; text-align: right" align="right"><b><span style="font-size: 10pt; color: #000066">&#160; <p></p>               </span></b></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15.75pt" valign="top" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><b><span style="font-size: 10pt; color: black">Reset                 <p></p>               </span></b></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15.75pt" valign="top" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><b><span style="font-size: 10pt; color: black">Add                 <p></p>               </span></b></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15.75pt" valign="top" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><b><span style="font-size: 10pt; color: black">Remove                 <p></p>               </span></b></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15.75pt" valign="top" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><b><span style="font-size: 10pt; color: black">Replace                 <p></p>               </span></b></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: windowtext 1pt solid; height: 15.75pt" valign="top" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><b><span style="font-size: 10pt; color: black">Move                 <p></p>               </span></b></p>         </td>       </tr>        <tr>         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 410pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="top" nowrap="nowrap" width="547">           <p style="margin-bottom: 0pt; line-height: normal"><a href="https://msdn2.microsoft.com/en-us/library/ms653204(VS.85).aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms653204(VS.85).aspx"><span style="font-size: 10pt; color: blue">EventArgs (Action) </span></a><u><span style="font-size: 10pt; color: blue">                 <p></p>               </span></u></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: windowtext 1pt solid; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>       </tr>        <tr style="height: 15pt">         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 410pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="top" nowrap="nowrap" width="547">           <p style="margin-bottom: 0pt; line-height: normal"><a href="https://msdn2.microsoft.com/en-us/library/ms653206(VS.85).aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms653206(VS.85).aspx"><span class="style1" style="font-size: 10pt; color: blue"><font face="Trebuchet MS">EventArgs (Action, IList changedItems) </font></span></a><u><span style="font-size: 10pt; color: blue">                 <p></p>               </span></u></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: windowtext 1pt solid; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>       </tr>        <tr style="height: 15pt">         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 410pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="top" nowrap="nowrap" width="547">           <p style="margin-bottom: 0pt; line-height: normal"><a href="https://msdn2.microsoft.com/en-us/library/ms653207(VS.85).aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms653207(VS.85).aspx"><span class="style1" style="font-size: 10pt; color: blue"><font face="Trebuchet MS">EventArgs (Action, object changedItem) </font></span></a><u><span style="font-size: 10pt; color: blue">                 <p></p>               </span></u></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: windowtext 1pt solid; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>       </tr>        <tr style="height: 15pt">         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 410pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="top" nowrap="nowrap" width="547">           <p style="margin-bottom: 0pt; line-height: normal"><a href="https://msdn2.microsoft.com/en-us/library/ms653208(VS.85).aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms653208(VS.85).aspx"><span class="style1" style="font-size: 10pt; color: blue"><font face="Trebuchet MS">EventArgs (Action, IList changedItems, int startingIndex) </font></span></a><u><span style="font-size: 10pt; color: blue">                 <p></p>               </span></u></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: windowtext 1pt solid; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>       </tr>        <tr style="height: 15pt">         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 410pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="top" nowrap="nowrap" width="547">           <p style="margin-bottom: 0pt; line-height: normal"><a href="https://msdn2.microsoft.com/en-us/library/ms653212(VS.85).aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms653212(VS.85).aspx"><span class="style1" style="font-size: 10pt; color: blue"><font face="Trebuchet MS">EventArgs (Action, object changedItem, int index) </font></span></a><u><span style="font-size: 10pt; color: blue">                 <p></p>               </span></u></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: windowtext 1pt solid; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>       </tr>        <tr style="height: 15pt">         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 410pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="top" nowrap="nowrap" width="547">           <p style="margin-bottom: 0pt; line-height: normal"><a href="https://msdn2.microsoft.com/en-us/library/ms653205(VS.85).aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms653205(VS.85).aspx"><span class="style1" style="font-size: 10pt; color: blue"><font face="Trebuchet MS">EventArgs (Action, IList newItems, IList oldItems) </font></span></a><u><span style="font-size: 10pt; color: blue">                 <p></p>               </span></u></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: windowtext 1pt solid; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>       </tr>        <tr style="height: 15pt">         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 410pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="top" nowrap="nowrap" width="547">           <p style="margin-bottom: 0pt; line-height: normal"><a href="https://msdn2.microsoft.com/en-us/library/ms653211(VS.85).aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms653211(VS.85).aspx"><span class="style1" style="font-size: 10pt; color: blue"><font face="Trebuchet MS">EventArgs (Action, object newItem, object oldItem) </font></span></a><u><span style="font-size: 10pt; color: blue">                 <p></p>               </span></u></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: windowtext 1pt solid; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>       </tr>        <tr style="height: 15pt">         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 410pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="top" nowrap="nowrap" width="547">           <p style="margin-bottom: 0pt; line-height: normal"><a href="https://msdn2.microsoft.com/en-us/library/ms653210(VS.85).aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms653210(VS.85).aspx"><span class="style1" style="font-size: 10pt; color: blue"><font face="Trebuchet MS">EventArgs (Action, IList newItems, IList oldItems, int startingIndex) </font></span></a><u><span style="font-size: 10pt; color: blue">                 <p></p>               </span></u></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: windowtext 1pt solid; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>       </tr>        <tr style="height: 15pt">         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 410pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="top" nowrap="nowrap" width="547">           <p style="margin-bottom: 0pt; line-height: normal"><a href="https://msdn2.microsoft.com/en-us/library/ms653213(VS.85).aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms653213(VS.85).aspx"><span class="style1" style="font-size: 10pt; color: blue"><font face="Trebuchet MS">EventArgs (Action, object newItem, object oldItem, int index) </font></span></a><u><span style="font-size: 10pt; color: blue">                 <p></p>               </span></u></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: windowtext 1pt solid; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>       </tr>        <tr style="height: 15pt">         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 410pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="top" nowrap="nowrap" width="547">           <p style="margin-bottom: 0pt; line-height: normal"><a href="https://msdn2.microsoft.com/en-us/library/ms653209(VS.85).aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms653209(VS.85).aspx"><span class="style1" style="font-size: 10pt; color: blue"><font face="Trebuchet MS">EventArgs (Action, IList changedItems, int index, int oldIndex) </font></span></a><u><span style="font-size: 10pt; color: blue">                 <p></p>               </span></u></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0in; width: 48pt; border-top-style: none; padding-top: 0in; border-bottom: windowtext 1pt solid; border-left-style: none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: windowtext 1pt solid; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>       </tr>        <tr style="height: 15pt">         <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 410pt; padding-top: 0in; border-bottom: medium none; height: 15pt" valign="top" nowrap="nowrap" width="547">           <p style="margin-bottom: 0pt; line-height: normal"><a href="https://msdn2.microsoft.com/en-us/library/ms653214(VS.85).aspx" mce_href="https://msdn2.microsoft.com/en-us/library/ms653214(VS.85).aspx"><span class="style1" style="font-size: 10pt; color: blue"><font face="Trebuchet MS">EventArgs (Action, object changedItems, int index, int oldIndex) </font></span></a><u><span style="font-size: 10pt; color: blue">                 <p></p>               </span></u></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: medium none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: medium none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: medium none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: medium none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">&#160; <p></p>             </span></p>         </td>          <td class="" style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0in; border-left: medium none; width: 48pt; padding-top: 0in; border-bottom: medium none; height: 15pt" valign="bottom" nowrap="nowrap" width="64">           <p style="margin-bottom: 0pt; line-height: normal; text-align: center" align="center"><span style="font-size: 10pt; color: black">x               <p></p>             </span></p>         </td>       </tr>     </tbody></table> </p>  <p>And suddenly it makes sense: four versions for add &amp; remove (single&amp; list, indexed and not), four versions for replace, two versions for move (single &amp; list). (Why Reset has five versions is still not clear to me ).</p>  <p>Hope that it is useful</p>]]></content:encoded>
    </item>
    <item>
      <title>The Big Event, Denver CO, January 31</title>
      <link>https://docs.microsoft.com/archive/blogs/xtof/the-big-event-denver-co-january-31</link>
      <pubDate>Sat, 02 Feb 2008 15:04:00 GMT</pubDate>
      <dc:creator><![CDATA[xtof]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xtof/2008/02/02/the-big-event-denver-co-january-31/</guid>
      <description><![CDATA[Hi,
I&nbsp;had the pleasure to present at a Developer Conference in Denver, CO last...]]></description>
      <content:encoded><![CDATA[<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Hi,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">I&nbsp;had the pleasure to present at a Developer Conference in Denver, CO last Thursday.&nbsp;It is coined 'the Big Event', and it deserves it's name, not necessarily in terms of numbers (my guess iss 300+ attendees) but how&nbsp;it was organized: down-to-earth, time for discussion, clear agenda. Thank you very much <A class="" title="Joe Shirey" href="https://www.joeshirey.com/2008/01/09/TheBigEventInDenverAndPhoenix.aspx" target=_blank mce_href="https://www.joeshirey.com/2008/01/09/TheBigEventInDenverAndPhoenix.aspx">Joe</A> for inviting me. <o:p></o:p></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">If you want to see the PowerPoint you can find it on <A href="https://cid-ff9137c9a26814d6.skydrive.live.com/self.aspx/DenverJan31/User%20Experience%20Matters%20-%20Denver%20Jan%2031.pptx" mce_href="https://cid-ff9137c9a26814d6.skydrive.live.com/self.aspx/DenverJan31/User%20Experience%20Matters%20-%20Denver%20Jan%2031.pptx">SkyDrive</A> <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>(10.2 MB, sorry).<o:p></o:p></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">- Christof<o:p></o:p></SPAN></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>ReMIX 07 Boston</title>
      <link>https://docs.microsoft.com/archive/blogs/xtof/remix-07-boston</link>
      <pubDate>Wed, 10 Oct 2007 13:12:00 GMT</pubDate>
      <dc:creator><![CDATA[xtof]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xtof/2007/10/10/remix-07-boston/</guid>
      <description><![CDATA[Hi,
I am on my way returning from ReMIX 07 Boston. 
https://www.remix07boston.com/
It has been a...]]></description>
      <content:encoded><![CDATA[<P>Hi,</P>
<P>I am on my way returning from ReMIX 07 Boston. </P>
<P><A href="https://www.remix07boston.com/">https://www.remix07boston.com/</A></P>
<P>It has been a long time since I presented in public. But this was definitly a conference worht going to. Great mix of content and it seemd that the attendees like it a lot.</P>
<P>I had two presentations: Bring back the User into Architecture and What an Architect needs to know about Architecture.</P>
<P>My slides can be found here <A href="https://cid-ff9137c9a26814d6.skydrive.live.com/self.aspx/Boston/">https://cid-ff9137c9a26814d6.skydrive.live.com/self.aspx/Boston/</A>&nbsp;I used skydrive the first time. hope that works.</P>
<P>Thanks, Christof</P>]]></content:encoded>
    </item>
    <item>
      <title>Binding to Indexers</title>
      <link>https://docs.microsoft.com/archive/blogs/xtof/binding-to-indexers</link>
      <pubDate>Fri, 28 Sep 2007 13:54:05 GMT</pubDate>
      <dc:creator><![CDATA[xtof]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xtof/2007/09/28/binding-to-indexers/</guid>
      <description><![CDATA[A while ago I played around with DataBinding an tried to implement a Sudoku Game similar to Sudoku...]]></description>
      <content:encoded><![CDATA[<p></p>  <p>A while ago I played around with DataBinding an tried to implement a Sudoku Game similar to Sudoku in the WPF tutorial <a title="https://blogs.msdn.com/coding4fun/archive/2006/11/06/999502.aspx" href="https://blogs.msdn.com/coding4fun/archive/2006/11/06/999502.aspx">https://blogs.msdn.com/coding4fun/archive/2006/11/06/999502.aspx</a>&#xA0;</p>  <p>One thing that is not in that game is, that some People (including me :-) ) like to enter all possible numbers in each cells of the grid and narrow it down stp by step till only one number is left in the cell. </p>  <p>I implemented a kind of a bit-set that can contains digits from 1 to 9. And wanted to bind it to each of the 9x9 cells of the Sudoku game in a small grid where the digits are shown or hidden accordingly.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/xtof/WindowsLiveWriter/BindingtoIndexers_9932/clip_image001%5B4%5D.jpg" original-url="https://blogs.msdn.com/blogfiles/xtof/WindowsLiveWriter/BindingtoIndexers_9932/clip_image001%5B4%5D.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="143" alt="clip_image001[4]" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/xtof/WindowsLiveWriter/BindingtoIndexers_9932/clip_image001%5B4%5D_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/xtof/WindowsLiveWriter/BindingtoIndexers_9932/clip_image001%5B4%5D_thumb.jpg" width="150" border="0" /></a></p>  <p>I exposed the individual digits through an indexer that returns a Boolean value. </p>  <p>I bind this bitset to a TextBlock that is either shown or hidden according to the Boolean value of the indexer </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/xtof/WindowsLiveWriter/BindingtoIndexers_9932/image_2.png" original-url="https://blogs.msdn.com/blogfiles/xtof/WindowsLiveWriter/BindingtoIndexers_9932/image_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="116" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/xtof/WindowsLiveWriter/BindingtoIndexers_9932/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/xtof/WindowsLiveWriter/BindingtoIndexers_9932/image_thumb.png" width="507" border="0" /></a>&#xA0;</p>  <p>This goes on for all nine elements. I had to use a converter since the Visibility is not boolean but an enumeration. </p>  <p>It worked great, only the digits are shown that are in the bitset. </p>  <p>&#xA0;</p>  <p><strong>But</strong>: updates to the bitset where not reflected in the UI. I knew it had something to do with INotifyPropertyChange or INotifyCollectionChanged but couldn't find anything.</p>  <p>Beatriz Costa <a title="https://www.beacosta.com/blog/" href="https://www.beacosta.com/blog/">https://www.beacosta.com/blog/</a> helped me and showed me that the Binding class is looking for &quot;Item[]&quot; in the argument of the PorpertyChanged Event </p>  <p>So with the following code did it :</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/xtof/WindowsLiveWriter/BindingtoIndexers_9932/image_4.png" original-url="https://blogs.msdn.com/blogfiles/xtof/WindowsLiveWriter/BindingtoIndexers_9932/image_4.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="208" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/xtof/WindowsLiveWriter/BindingtoIndexers_9932/image_thumb_1.png" original-url="https://blogs.msdn.com/blogfiles/xtof/WindowsLiveWriter/BindingtoIndexers_9932/image_thumb_1.png" width="503" border="0" /></a> </p>  <p>Thanks Beatriz.</p>]]></content:encoded>
    </item>
    <item>
      <title>Bio</title>
      <link>https://docs.microsoft.com/archive/blogs/xtof/bio</link>
      <pubDate>Thu, 16 Aug 2007 19:35:00 GMT</pubDate>
      <dc:creator><![CDATA[xtof]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xtof/2007/08/16/bio/</guid>
      <description><![CDATA[Christof Sprenger is an Architect Evangelist in the Architecture Strategy at Microsoft. Christof...]]></description>
      <content:encoded><![CDATA[<P>Christof Sprenger is an Architect Evangelist in the Architecture Strategy at Microsoft. Christof supports the Microsofts worldwide Architect Evangelist Community with events and content creation and recently works on content for Solution Architects that focus on the User Experience side of Architecture.</P>
<P>Christof worked for many years as an Architect and Evangelist in Germany, has a broad eperience in working with customers and presenting at events and enjoys the technologies and methodologies that have&nbsp;good amount of pragmtism&nbsp;as&nbsp;well as a thought-out foundation.</P>]]></content:encoded>
    </item>
    <item>
      <title>Top 10 WPF features</title>
      <link>https://docs.microsoft.com/archive/blogs/xtof/top-10-wpf-features</link>
      <pubDate>Thu, 16 Aug 2007 19:26:00 GMT</pubDate>
      <dc:creator><![CDATA[xtof]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xtof/2007/08/16/top-10-wpf-features/</guid>
      <description><![CDATA[Hi,  I recently had the chance to spend quite some time to familiarize myself with WPF. But I do not...]]></description>
      <content:encoded><![CDATA[<p>Hi, </p> <p>I recently had the chance to spend quite some time to familiarize myself with WPF. But I do not have endless time (who has?). And&nbsp;I will probably not spend more than a few hours a month programming with WPF. I thought it might be a worthwhile exercise to define my top 10 list of cool and useful things in WPF. </p> <p>My&nbsp;reasoning behind this is </p> <ul> <li>WPF is a complex but promising piece of technology  <li>How can you work with people that use it, discuss with them without spending weeks of in depth training.  <li>What are the principals behind WPF and why do people think it is better than technologies before</li></ul> <p>There is no specific order in the list and&nbsp;I might change my mind what is a core feature in the future anyway. Would love&nbsp;to hear your feedback. </p> <p>1)&nbsp;&nbsp;&nbsp; XAML as the Markup: XAML goes in some ways beyond XML with rules simple to understand. Sure there are other ways, but&nbsp;I like it.<br>2)&nbsp;&nbsp;&nbsp; Dependency properties as a basis for features such as data binding, styling, triggers, and animation. Who knows how long it takes till they are part of a framework.<br>3)&nbsp;&nbsp;&nbsp; Styles &amp; Triggers: CSS shows that this is very useful<br>4)&nbsp;&nbsp;&nbsp; Layout system: practical to use out of the box and extensible <br>5)&nbsp;&nbsp;&nbsp; Control templates: Separation of appearance and behavior <br>6)&nbsp;&nbsp;&nbsp; Input + events : right level of abstraction<br>7)&nbsp;&nbsp;&nbsp; Animation : declarative rocks :-)<br>8)&nbsp;&nbsp;&nbsp; Databinding : easy and very flexible in combination with the templates and all.<br>9)&nbsp;&nbsp;&nbsp; Documents, Text: haven’t seen a lot yet but it looks as powerful as TeX<br>10)&nbsp; Integration of 2D and 3D : the fact that there is 3D is great in its own, but the integration will make it more pervasive </p>]]></content:encoded>
    </item>
  </channel>
</rss>