<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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>Okoboji: a lake, a mythical university, Kevin Moore's blog</title><link>http://blogs.msdn.com/b/okoboji/</link><description>Kevin Moore, Program Manager, Windows Presentation Foundation (WPF), WinFX</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Update your bookmarks and blog readers--I'm moving</title><link>http://blogs.msdn.com/b/okoboji/archive/2007/04/28/update-your-bookmarks-and-blog-readers-i-m-moving.aspx</link><pubDate>Sun, 29 Apr 2007 04:37:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2318673</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/okoboji/rsscomments.aspx?WeblogPostID=2318673</wfw:commentRss><comments>http://blogs.msdn.com/b/okoboji/archive/2007/04/28/update-your-bookmarks-and-blog-readers-i-m-moving.aspx#comments</comments><description>&lt;p&gt;Lake &lt;a href="http://blogs.msdn.com/okoboji"&gt;Okoboji&lt;/a&gt; is freezing over indefinitely.&lt;/p&gt; &lt;p&gt;In an effort to unify all the random stuff I do, I've rolled my WPF blogging under my (vanity) domain.&lt;/p&gt; &lt;p&gt;Point your favorites and feed&amp;nbsp;aggregators to &lt;a href="http://work.j832.com/"&gt;work.j832.com&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;See you on the other side!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2318673" width="1" height="1"&gt;</description></item><item><title>Updates to 2 must-have applications! Both managed code! Both free (as in beer)!</title><link>http://blogs.msdn.com/b/okoboji/archive/2007/02/21/updates-to-2-must-have-applications-both-managed-code-both-free-as-in-beer.aspx</link><pubDate>Thu, 22 Feb 2007 03:27:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1737923</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/okoboji/rsscomments.aspx?WeblogPostID=1737923</wfw:commentRss><comments>http://blogs.msdn.com/b/okoboji/archive/2007/02/21/updates-to-2-must-have-applications-both-managed-code-both-free-as-in-beer.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.getpaint.net/"&gt;&lt;strong&gt;Paint.NET&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; ROCKS!&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I can't imagine ever paying for Photoshop. Now in version 3.0. The killer new feature: MDI. Awesome.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector .NET&lt;/a&gt; ROCKS!&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;(Via &lt;a href="http://www.simplegeek.com/PermaLink.aspx/fd8682b4-10fe-465b-af1c-883af8f3d445"&gt;Chris&lt;/a&gt;, Via &lt;a href="http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2082"&gt;Chris&lt;/a&gt;.) Take a look at the &lt;a href="http://www.aisto.com/roeder/paper/reflector5.ppt"&gt;PowerPoint deck&lt;/a&gt; for full details of v5.0. The killer new feature: Full C# v3.0 support. Awesome.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1737923" width="1" height="1"&gt;</description></item><item><title>Windows Vista: What Should WebSite Hosters Do?</title><link>http://blogs.msdn.com/b/okoboji/archive/2007/02/21/windows-vista-what-should-website-hosters-do.aspx</link><pubDate>Wed, 21 Feb 2007 21:13:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1736406</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/okoboji/rsscomments.aspx?WeblogPostID=1736406</wfw:commentRss><comments>http://blogs.msdn.com/b/okoboji/archive/2007/02/21/windows-vista-what-should-website-hosters-do.aspx#comments</comments><description>&lt;p&gt;Check out &lt;a href="http://rrelyea.spaces.live.com/"&gt;Rob's blog&lt;/a&gt; on &lt;a href="http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1661.entry"&gt;instructions for ISP's&lt;/a&gt; (or anyone that runs a server) on how to host WPF content (XBaps, XPS docs, etc).&lt;/p&gt; &lt;p&gt;If you're a WPF fan, link to this post. T'would be good to&amp;nbsp;build awareness on this topic.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1736406" width="1" height="1"&gt;</description></item><item><title>On ItemTemplate, ContentTemplate, DataTemplate</title><link>http://blogs.msdn.com/b/okoboji/archive/2007/02/12/on-itemtemplate-contenttemplate-datatemplate.aspx</link><pubDate>Tue, 13 Feb 2007 10:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1667371</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/okoboji/rsscomments.aspx?WeblogPostID=1667371</wfw:commentRss><comments>http://blogs.msdn.com/b/okoboji/archive/2007/02/12/on-itemtemplate-contenttemplate-datatemplate.aspx#comments</comments><description>&lt;p&gt;A &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1190413&amp;amp;SiteID=1" mce_href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1190413&amp;amp;SiteID=1"&gt;recent forum post&lt;/a&gt; asked how one could build out ItemsControl-like functionality in a custom control.&lt;/p&gt; &lt;p&gt;Let me start from the basics.&lt;/p&gt; &lt;p&gt;ContentPresenter presents content. If you give it a UIElement (Grid, Button, Border) it will just display it. Easy enough. If you give it "data" (Customer, Order, Int32) it will display it using a DataTemplate.&lt;/p&gt; &lt;p&gt;DataTemplate is to data as ControlTemplate is to Control. It lets one define a tree of visuals that represent a given DataContext.&lt;/p&gt; &lt;p&gt;Robby and I &lt;a href="http://blogs.msdn.com/okoboji/archive/2006/02/02/523681.aspx" mce_href="http://blogs.msdn.com/okoboji/archive/2006/02/02/523681.aspx"&gt;chatted about this&lt;/a&gt; just over a year ago.&lt;/p&gt; &lt;p&gt;ContentPresenter is the "thing" that does the work to realize the DataTemplate. It has the magic.&lt;/p&gt; &lt;p&gt;One can give ContentPresenter a DataTemplate in two ways:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Set the ContentTemplate property. This is typeof(DataTemplate)  &lt;/li&gt;&lt;li&gt;Set the ContentTemplateSelector. This is typeof(DataTemplateSelector)&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;The selector is used if the ContentTemplate is null. In the end, it just returns a DataTemplate.&lt;/p&gt; &lt;p&gt;With me so far?&lt;/p&gt; &lt;p&gt;Now ContentPresenter has no "chrome" to speak of. If you want to show content with some interactive chrome, use a ContentControl. This way you can show some non-data state (like selection, focus) and have non-data&amp;nbsp;behavior (like checking or clicking). This is what Button, CheckBox, and ListBoxItem do.&lt;/p&gt; &lt;p&gt;All of these controls do very little. The own some purpose-specific state and rely on a ContentPresenter in their control template to do the work of displaying content. ContentControl also has a ContentTemplate property and ContentTemplateSelector property (as well as, you guessed it, a Content property). These are never really used directly by the Control, they are simply used to alias values down to the templated ContentPresenter.&lt;/p&gt; &lt;p&gt;Moving to ItemsControl (IC), we have a similar story.&lt;/p&gt; &lt;p&gt;IC has two analogous properties:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;ItemTemplate [typeof(DataTemplate)]  &lt;/li&gt;&lt;li&gt;ItemTemplateSelector [typeof(DataTemplateSelector)]&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Now&amp;nbsp;IC does a very specific trick. It takes data items from a list, creates wrappers (or containers) for each data item, and places them in a specified panel.&lt;/p&gt; &lt;p&gt;&lt;b&gt;GetContainerForItemOverride&lt;/b&gt; is a virtual method on IC that is used to generate containers--ListBox creates ListBoxItem, TreeView creates TreeViewItem, etc.&lt;/p&gt; &lt;p&gt;&lt;b&gt;PrepareContainerForItemOverride&lt;/b&gt; is another virtual method on IC. This is the method that marries the generated container to the corresponding data item. In the process, it sets up the container with the right properties from the parent IC. It sets the ContentTemplate of the container to be the ItemTemplate of the IC. Same with ItemTemplateSelector. When the container is a ContentControl, these are once again proxied to an underlying ContentPresenter.&lt;/p&gt; &lt;p&gt;The question on the forum asks how this can be accomplished in a custom control. Well, if one doesn't want to use IC, one can accomplish the same set of things. Create code to generate either a ContentPresenter or ContentControl for each data item. Expose Template/TemplateSelector properties on your parent control. When you generate child items, make sure you alias the properties from parent to child. That's about it.&lt;/p&gt; &lt;p&gt;I do this trick in the &lt;b&gt;Graph&lt;/b&gt; control as part of the &lt;a href="http://j832.com/bagotricks/" mce_href="http://j832.com/bagotricks/"&gt;Bag-o-tricks&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I know that the ItemTemplate, ContentTemplate, DataTemplate naming thing can be confusing. Remember, at the end of the day, it all boils down to a ContentPresenter + Template to display data is a cool way.&lt;/p&gt; &lt;p&gt;Hope this answers the question and sheds some light on the workings of our more complicated controls.&lt;/p&gt; &lt;p&gt;Happy hacking!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1667371" width="1" height="1"&gt;</description></item><item><title>Programmer Don't Like to Code</title><link>http://blogs.msdn.com/b/okoboji/archive/2007/02/05/programmer-don-t-like-to-code.aspx</link><pubDate>Tue, 06 Feb 2007 07:13:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1609053</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/okoboji/rsscomments.aspx?WeblogPostID=1609053</wfw:commentRss><comments>http://blogs.msdn.com/b/okoboji/archive/2007/02/05/programmer-don-t-like-to-code.aspx#comments</comments><description>&lt;p&gt;Forgot what link brought me here, but I was quite impressed with the analysis.&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://rentzsch.com/notes/programmersDontLikeToCode"&gt;Programmer's Don't Like to Code&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;...they &lt;strong&gt;&lt;em&gt;like problem solving&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;If programmers liked to code, we’d all be writing in machine language to this day. You can write that stuff all day and get precious little of the real problem solved.  &lt;p&gt;If programmers liked to code, they wouldn’t value a language by its libraries. If programmers liked to code, every last one of us would be overjoyed to write our own HTTP client.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Interesting stuff...&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1609053" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/okoboji/archive/tags/Programming/">Programming</category></item><item><title>Updated Bag-o-Tricks for January</title><link>http://blogs.msdn.com/b/okoboji/archive/2007/01/11/updated-bag-o-tricks-for-january.aspx</link><pubDate>Fri, 12 Jan 2007 03:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1452853</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/okoboji/rsscomments.aspx?WeblogPostID=1452853</wfw:commentRss><comments>http://blogs.msdn.com/b/okoboji/archive/2007/01/11/updated-bag-o-tricks-for-january.aspx#comments</comments><description>&lt;p&gt;In celebration of the availability of the &lt;a href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx" mce_href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx"&gt;January CTP of VS "Orcas"&lt;/a&gt;, I've updated the bag-o-tricks.&lt;/p&gt; &lt;p&gt;(Actually, it's because I'm stuck at home, but I wanted an excuse to mention the VS CTP.)&lt;/p&gt; &lt;p&gt;Download here: &lt;a href="http://j832.com/bagotricks/" title="http://j832.com/bagotricks/" mce_href="http://j832.com/bagotricks/"&gt;http://j832.com/bagotricks/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Have fun!&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;New: Zap Scroller&lt;/font&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.msdn.com/blogfiles/okoboji/WindowsLiveWriter/UpdatedBagoTricksforJanuary_E35F/20070111Zap4.png" mce_src="http://blogs.msdn.com/blogfiles/okoboji/WindowsLiveWriter/UpdatedBagoTricksforJanuary_E35F/20070111Zap4.png" width="819" height="489"&gt;&lt;/p&gt; &lt;p&gt;(Cleaned up my &lt;a href="http://blogs.msdn.com/okoboji/archive/2006/12/24/a-super-rough-christmas-present.aspx" mce_href="http://blogs.msdn.com/okoboji/archive/2006/12/24/a-super-rough-christmas-present.aspx"&gt;Christmas present&lt;/a&gt; for public consumption.)&lt;/p&gt; &lt;p&gt;I've seen this trick done in flash quite a bit. I wanted to play with animating the "current item" in an ItemsControl. I also wanted to model a method for exposing a preview of all of the items in an ItemsControl.&lt;/p&gt; &lt;p&gt;I steal and extend some of the command tricks I used it "List Pager". Let me know what you think.&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Updated: Graph&lt;/font&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.msdn.com/blogfiles/okoboji/WindowsLiveWriter/UpdatedBagoTricksforJanuary_E35F/20070111Graph4.png" mce_src="http://blogs.msdn.com/blogfiles/okoboji/WindowsLiveWriter/UpdatedBagoTricksforJanuary_E35F/20070111Graph4.png" width="819" height="489"&gt;&lt;/p&gt; &lt;p&gt;A couple of bug fixes. When you set the center node to null, I clear out the lines right away. New nodes come in randomly instead of at the same spot.&lt;/p&gt; &lt;p&gt;&lt;i&gt;This post brought to you by: &lt;/i&gt;&lt;a href="http://windowslivewriter.spaces.live.com/" mce_href="http://windowslivewriter.spaces.live.com/"&gt;&lt;i&gt;Windows Live Writer&lt;/i&gt;&lt;/a&gt;&lt;i&gt;, &lt;/i&gt;&lt;a href="http://www.getpaint.net/index2.html" mce_href="http://www.getpaint.net/index2.html"&gt;&lt;i&gt;Paint .NET&lt;/i&gt;&lt;/a&gt;&lt;i&gt;, and &lt;/i&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/" mce_href="http://www.aisto.com/roeder/dotnet/"&gt;&lt;i&gt;.NET Reflector&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1452853" width="1" height="1"&gt;</description></item><item><title>A (super rough) Christmas Present</title><link>http://blogs.msdn.com/b/okoboji/archive/2006/12/24/a-super-rough-christmas-present.aspx</link><pubDate>Sun, 24 Dec 2006 12:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1356328</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/okoboji/rsscomments.aspx?WeblogPostID=1356328</wfw:commentRss><comments>http://blogs.msdn.com/b/okoboji/archive/2006/12/24/a-super-rough-christmas-present.aspx#comments</comments><description>&lt;p&gt;It's 1:22 AM. I think I'm getting sick. I'm flying out for California tomorrow. Haven't packed yet.&lt;/p&gt; &lt;p&gt;And I'm coding.&lt;/p&gt; &lt;p&gt;Some ideas you just have to get working before you can put them down.&lt;/p&gt; &lt;p&gt;In no way is this beatiful code. The end-to-end is pretty interesting, though.&lt;/p&gt; &lt;p&gt;When I'm back from Cali, I'll clean it up and put it in the Bag-o-Tricks.&lt;/p&gt; &lt;p&gt;In the mean time, have fun playing with &lt;strong&gt;&lt;a href="http://blogs.msdn.com/okoboji/attachment/1356328.ashx"&gt;ZapScroller&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Playing with control templates + commands + custom animation.&lt;/p&gt; &lt;p&gt;Build. Run. Let me know if you think I'm crazy.&lt;/p&gt; &lt;p&gt;In the mean time, have a safe New Year.&lt;/p&gt; &lt;p&gt;See you on the other side!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1356328" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-01-35-63-28/ZapScrollViewer.zip" length="12442" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/okoboji/archive/tags/WPF/">WPF</category></item><item><title>Chat with the WPF team tomorrow</title><link>http://blogs.msdn.com/b/okoboji/archive/2006/12/20/chat-with-the-wpf-team-tomorrow.aspx</link><pubDate>Thu, 21 Dec 2006 03:57:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1336362</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/okoboji/rsscomments.aspx?WeblogPostID=1336362</wfw:commentRss><comments>http://blogs.msdn.com/b/okoboji/archive/2006/12/20/chat-with-the-wpf-team-tomorrow.aspx#comments</comments><description>&lt;p&gt;Our holiday gift to you: listening. Tomorrow (Dec 21) 12:30 - 1:30 PM Pacific Time.&lt;/p&gt; &lt;p&gt;Details: &lt;a title="http://msdn.microsoft.com/chats/" href="http://msdn.microsoft.com/chats/"&gt;http://msdn.microsoft.com/chats/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Add to Calendar" href="http://msdn.microsoft.com/chats/outlook_reminders/06_1221_MSDN_WPF.ics"&gt;Add to Calendar&lt;/a&gt;&lt;/p&gt; &lt;p&gt;(As always, &lt;a href="http://blogs.msdn.com/tims/"&gt;Tim&lt;/a&gt; is &lt;a href="http://blogs.msdn.com/tims/archive/2006/12/14/wpf-technical-chat-thursday-december-20th.aspx"&gt;much more thorough&lt;/a&gt; than&amp;nbsp;I.)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1336362" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/okoboji/archive/tags/WPF/">WPF</category></item><item><title>Expression Web - beautiful</title><link>http://blogs.msdn.com/b/okoboji/archive/2006/12/18/expression-web-beautiful.aspx</link><pubDate>Tue, 19 Dec 2006 09:35:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1323133</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/okoboji/rsscomments.aspx?WeblogPostID=1323133</wfw:commentRss><comments>http://blogs.msdn.com/b/okoboji/archive/2006/12/18/expression-web-beautiful.aspx#comments</comments><description>&lt;p&gt;I'm working on an end-of-year letter as web site. (Yeah, I'm a geek. I have way more email addresses for friends than mailing addresses.)&lt;/p&gt; &lt;p&gt;Anyway, I've been bought into CSS for a while. The start of my projcet aligned nicely with the shipment of &lt;a href="http://www.microsoft.com/products/expression/en/web_designer/default.mspx"&gt;Expression Web&lt;/a&gt;, so I've been giving it a go.&lt;/p&gt; &lt;p&gt;Amazing. The CSS experience is really nice. Managing a site via FTP, dealing with syncing, etc. all very cool.&lt;/p&gt; &lt;p&gt;Give it a test run. You'll be happy.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1323133" width="1" height="1"&gt;</description></item><item><title>Business Objects are cooler than you think</title><link>http://blogs.msdn.com/b/okoboji/archive/2006/12/17/business-objects-are-cooler-than-you-think.aspx</link><pubDate>Mon, 18 Dec 2006 10:37:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1314854</guid><dc:creator>MSDNArchive</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/okoboji/rsscomments.aspx?WeblogPostID=1314854</wfw:commentRss><comments>http://blogs.msdn.com/b/okoboji/archive/2006/12/17/business-objects-are-cooler-than-you-think.aspx#comments</comments><description>&lt;p&gt;I think it was&amp;nbsp;&lt;a href="http://www.paulstovell.net/Articles/WPFValidation.aspx"&gt;Paul Stovell's article&lt;/a&gt; on Validation in WPF that got me started. The article is amazing and has inspired a lot of my thoughts on what to do with binding in v-next.&lt;/p&gt; &lt;p&gt;Paul mentioned &lt;a href="http://www.lhotka.net/Area.aspx?id=4"&gt;CSLA&lt;/a&gt;. I wasn't familiar. I dug in. Found &lt;a href="http://www.lhotka.net/"&gt;Rockford Lhotka&lt;/a&gt;. Then I found &lt;a href="http://www.amazon.com/gp/redirect.html%3FASIN=1590596323%26tag=j832com%26lcode=sp1%26cID=2025%26ccmID=165953%26location=/o/ASIN/1590596323%253FSubscriptionId=1KDHEGDEXZNBKYAEECR2"&gt;Expert C# 2005 Business Objects&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Great book! (at least as of page 53).&lt;/p&gt; &lt;p&gt;I figured if we're going to build a foundation that allows easy use of business objects, I'd better understand them deeply.&lt;/p&gt; &lt;p&gt;An interesting nugget from the book: the philosophical difference between a relational model and a object model (at least according to Rockford).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Relational model&lt;/strong&gt;: all about &lt;em&gt;data&lt;/em&gt;. Should always strive for &lt;em&gt;data&lt;/em&gt; normalization--reduce duplication of &lt;em&gt;data&lt;/em&gt;.&lt;br&gt;&lt;strong&gt;Object model&lt;/strong&gt;: all about &lt;em&gt;behavior&lt;/em&gt;. Should always strive for &lt;em&gt;behavior&lt;/em&gt; normalization--reduce duplication of &lt;em&gt;behavior&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;Things I rarely think about. I'll let you know if I get any other cool nuggets as I read.&lt;/p&gt; &lt;p&gt;Any other good resources on the topic that you know?&lt;/p&gt; &lt;p&gt;Hope ya'll had a good weekend.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1314854" width="1" height="1"&gt;</description></item></channel></rss>