<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Matthieu MEZIL : WPF</title><link>http://msmvps.com/blogs/matthieu/archive/tags/WPF/default.aspx</link><description>Tags: WPF</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>EDM Designer V0.9</title><link>http://msmvps.com/blogs/matthieu/archive/2009/02/09/edm-designer-v0-9.aspx</link><pubDate>Mon, 09 Feb 2009 23:37:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1670909</guid><dc:creator>Matthieu MEZIL</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/matthieu/rsscomments.aspx?PostID=1670909</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/matthieu/commentapi.aspx?PostID=1670909</wfw:comment><comments>http://msmvps.com/blogs/matthieu/archive/2009/02/09/edm-designer-v0-9.aspx#comments</comments><description>&lt;p&gt;&lt;a target="_blank" href="http://msmvps.com/blogs/matthieu/archive/2009/01/07/edm-designer.aspx"&gt;My first EDM Designer version&lt;/a&gt; was a viewer. &lt;a target="_self" href="http://www.codeplex.com/edmdesigner"&gt;It&amp;#39;s now a real designer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can realize all the EDM mapping scenarii without writing xml yourself! &lt;img src="http://msmvps.com/emoticons/emotion-1.gif" alt="Smile" /&gt;... except for Functions&amp;nbsp;mapping (with Stored Procedures).&lt;/p&gt;
&lt;p&gt;I am very happy to see the interest of some of you on&amp;nbsp;this project and I am sorry to be so slow but, you have to understand that I work on it only&amp;nbsp;at night and moreover, I have a wife and two children, so I haven&amp;#39;t got as much time as I want to do it.&lt;/p&gt;
&lt;p&gt;Remember that it&amp;#39;s my first WPF project. So the code is probably not perfect. Moreover, my tests are&amp;nbsp;near&amp;nbsp;to zero so there are probably some bugs. If you&amp;nbsp;find one, please send me an email at &amp;quot;matthieu.mezil at winwise.fr&amp;quot;. If you have some WPF advices, you can also send me an email.&lt;/p&gt;
&lt;p&gt;In the next version, I will try to integrate it in VS.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1670909" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/matthieu/archive/tags/.Net/default.aspx">.Net</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/Entity+Framework+_2800_EF_2900_/default.aspx">Entity Framework (EF)</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/Entity+Data+Model+_2800_EDM_2900_/default.aspx">Entity Data Model (EDM)</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/WPF/default.aspx">WPF</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/EDM+Designer/default.aspx">EDM Designer</category></item><item><title>EDM Designer</title><link>http://msmvps.com/blogs/matthieu/archive/2009/01/07/edm-designer.aspx</link><pubDate>Wed, 07 Jan 2009 09:36:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1658730</guid><dc:creator>Matthieu MEZIL</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/matthieu/rsscomments.aspx?PostID=1658730</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/matthieu/commentapi.aspx?PostID=1658730</wfw:comment><comments>http://msmvps.com/blogs/matthieu/archive/2009/01/07/edm-designer.aspx#comments</comments><description>&lt;p&gt;I didn&amp;rsquo;t blog for a (too) long time which is strange for me. &lt;/p&gt;
&lt;p&gt;I received some emails asking if I was ok and I found in this &lt;a target="_blank" href="http://weblogs.asp.net/scottgu/archive/2008/09/02/quick-update.aspx"&gt;a similitude between Scott Guthrie and myself&lt;/a&gt;. Lol&lt;/p&gt;
&lt;p&gt;So what did I do during my nights this last month? No I don&amp;rsquo;t sleep more and no &lt;a target="_blank" href="http://weblogs.asp.net/scottgu/archive/2008/09/02/quick-update.aspx"&gt;I wasn&amp;rsquo;t in a 6 weeks&amp;rsquo; vacation&lt;/a&gt;.&amp;nbsp; &lt;img src="http://msmvps.com/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/p&gt;
&lt;p&gt;In fact, I&amp;#39;m beginning a very funny project: doing an EDM designer! And I thought that it was time I did my first WPF project. &lt;img src="http://msmvps.com/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/p&gt;
&lt;p&gt;If you look at the code, you will see a VB project. Yes Julie, you read well.&amp;nbsp;&lt;img src="http://msmvps.com/emoticons/emotion-1.gif" alt="Smile" /&gt; This project is used to write an edmx file from my classes and, instead of using serialization, I choose to play with VB9 XML Literal. For all other projects, I use C# of course.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.codeplex.com/edmdesigner"&gt;The first version&lt;/a&gt; is only a CSDL read-only designer. &lt;/p&gt;
&lt;p&gt;I think it makes two interesting points compared to the current MS designer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The ability to show only some entity types and not all&lt;/li&gt;
&lt;li&gt;The ability to show Complex Type&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img width="556" src="http://blogs.developpeur.org/photos/matthieu_mezil/images/43407/original.aspx" height="434" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;What do I want to add in the following versions?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The ability to add or remove csdl type / property / relation / inheritance (fixing &lt;a target="_blank" href="http://msmvps.com/blogs/matthieu/archive/2008/09/17/tpt-with-designer-can-generate-errors-3034-or-3021.aspx"&gt;these bugs&lt;/a&gt; of course) and to save it into an edmx file&lt;/li&gt;
&lt;li&gt;The ability to change csdl type / property properties like the name, the visibility, etc.&lt;/li&gt;
&lt;li&gt;The ability to show and change the mapping (including TPC which isn&amp;rsquo;t supported by current MS designer)&lt;/li&gt;
&lt;li&gt;The ability to (re)generate csdl entity types from ssdl entity types. (In current MS designer, it generates it when you add the table / view from the wizard but if you delete your csdl entity type, you have to regenerate it yourself or to delete your ssdl entity type and to use the wizard to add it again. Moreover, for SSDL View, you have nothing to generate the CSDL entity type)&lt;/li&gt;
&lt;li&gt;The ability to add SSDL Views or Functions&lt;/li&gt;
&lt;li&gt;Integrate it in VS&lt;/li&gt;
&lt;li&gt;The ability to save your designer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can download it &lt;a target="_blank" href="http://www.codeplex.com/edmdesigner"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As I said previously, I am a WPF beginner so if you have time to audit it and if you have some remarks, advices, criticism, post a comment please.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1658730" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/matthieu/archive/tags/.Net/default.aspx">.Net</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/Entity+Framework+_2800_EF_2900_/default.aspx">Entity Framework (EF)</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/Entity+Data+Model+_2800_EDM_2900_/default.aspx">Entity Data Model (EDM)</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/VB+.Net/default.aspx">VB .Net</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/WPF/default.aspx">WPF</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/EDM+Designer/default.aspx">EDM Designer</category></item><item><title>EF and WPF</title><link>http://msmvps.com/blogs/matthieu/archive/2008/08/29/ef-and-wpf.aspx</link><pubDate>Fri, 29 Aug 2008 20:07:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1646219</guid><dc:creator>Matthieu MEZIL</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/matthieu/rsscomments.aspx?PostID=1646219</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/matthieu/commentapi.aspx?PostID=1646219</wfw:comment><comments>http://msmvps.com/blogs/matthieu/archive/2008/08/29/ef-and-wpf.aspx#comments</comments><description>&lt;p&gt;I had a question today which allow me to do my first WPF poject. &lt;img src="http://msmvps.com/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/p&gt;
&lt;p&gt;The guy told me that he has a master detail scenario with two windows: one to edit masters and one to edit details. In details, he wants to choose the master with a combo.&lt;/p&gt;
&lt;p&gt;He wants that when he adds one master, the combo adds it also without having to rebind it and without having to save the context.&lt;/p&gt;
&lt;p&gt;How to do this?&lt;/p&gt;
&lt;p&gt;I developp a class for this:&lt;/p&gt;
&lt;div style="font-size:10pt;background:white;color:black;font-family:Courier New;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ContextEntitiesLoaded&lt;/span&gt;&amp;lt;T&amp;gt; : &lt;span style="color:#2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;T&amp;gt;, &lt;span style="color:#2b91af;"&gt;INotifyCollectionChanged&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;{&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ObjectContext&lt;/span&gt; _context;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EntityState&lt;/span&gt; _states = &lt;span style="color:#2b91af;"&gt;EntityState&lt;/span&gt;.Added | &lt;span style="color:#2b91af;"&gt;EntityState&lt;/span&gt;.Modified | &lt;span style="color:#2b91af;"&gt;EntityState&lt;/span&gt;.Unchanged;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; ContextEntitiesLoaded(&lt;span style="color:#2b91af;"&gt;ObjectContext&lt;/span&gt; context)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _context = context;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _context.ObjectStateManager.ObjectStateManagerChanged += (sender, e) =&amp;gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (e.Element &lt;span style="color:#0000ff;"&gt;is&lt;/span&gt; T)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;switch&lt;/span&gt; (e.Action)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;case&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;CollectionChangeAction&lt;/span&gt;.Add:&lt;/p&gt;
&lt;div style="font-size:10pt;background:white;color:black;font-family:Courier New;"&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;case&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;CollectionChangeAction&lt;/span&gt;.Remove:&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (e.Element &lt;span style="color:blue;"&gt;is&lt;/span&gt; T)&lt;/p&gt;
&lt;/div&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnNotifyCollectionChanged();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;break&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EntityState&lt;/span&gt; States&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; _states; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; { _states = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Func&lt;/span&gt;&amp;lt;T, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt; SortExpression { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; OnNotifyCollectionChanged()&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (CollectionChanged != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CollectionChanged(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;NotifyCollectionChangedEventArgs&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;NotifyCollectionChangedAction&lt;/span&gt;.Reset));&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; IEnumerable&amp;lt;T&amp;gt; Members&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IEnumerator&lt;/span&gt;&amp;lt;T&amp;gt; GetEnumerator()&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; q = _context.ObjectStateManager.GetObjectStateEntries(States).Select(se =&amp;gt; se.Entity).OfType&amp;lt;T&amp;gt;();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (SortExpression != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; q = q.OrderBy(SortExpression);&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; q.GetEnumerator();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; IEnumerable Members&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Collections.&lt;span style="color:#2b91af;"&gt;IEnumerator&lt;/span&gt; System.Collections.&lt;span style="color:#2b91af;"&gt;IEnumerable&lt;/span&gt;.GetEnumerator()&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; GetEnumerator();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; INotifyCollectionChanged Members&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;event&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;NotifyCollectionChangedEventHandler&lt;/span&gt; CollectionChanged;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Then I need to get all the classes in the context and to bind them on the combo:&lt;/p&gt;
&lt;div style="font-size:10pt;background:white;color:black;font-family:Courier New;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Window1&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;Window&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;{&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Window1()&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;ObjectDataProvider&lt;/span&gt; odp = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.FindResource(&lt;span style="color:#a31515;"&gt;&amp;quot;maSource&amp;quot;&lt;/span&gt;) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ObjectDataProvider&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (odp != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; c &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;NorthwindEntities&lt;/span&gt;.Instance.Categories); &lt;span style="color:#008000;"&gt;// to load the categories on the context&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; odp.ObjectInstance = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ContextEntitiesLoaded&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;Category&lt;/span&gt;&amp;gt;(&lt;span style="color:#2b91af;"&gt;NorthwindEntities&lt;/span&gt;.Instance) { SortExpression = c =&amp;gt; c.CategoryName };&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [...]&lt;/p&gt;
&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1646219" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/matthieu/archive/tags/.Net/default.aspx">.Net</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/Entity+Framework+_2800_EF_2900_/default.aspx">Entity Framework (EF)</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/Entity+Data+Model+_2800_EDM_2900_/default.aspx">Entity Data Model (EDM)</category><category domain="http://msmvps.com/blogs/matthieu/archive/tags/WPF/default.aspx">WPF</category></item></channel></rss>