<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Okoboji: a lake, a mythical university, Kevin Moore's blog</title><subtitle type="html">Kevin Moore, Program Manager, Windows Presentation Foundation (WPF), WinFX</subtitle><id>http://blogs.msdn.com/okoboji/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/okoboji/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2006-09-26T18:28:00Z</updated><entry><title>Update your bookmarks and blog readers--I'm moving</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2007/04/28/update-your-bookmarks-and-blog-readers-i-m-moving.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2007/04/28/update-your-bookmarks-and-blog-readers-i-m-moving.aspx</id><published>2007-04-29T04:37:02Z</published><updated>2007-04-29T04:37:02Z</updated><content type="html">&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;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author></entry><entry><title>Updates to 2 must-have applications! Both managed code! Both free (as in beer)!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2007/02/21/updates-to-2-must-have-applications-both-managed-code-both-free-as-in-beer.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2007/02/21/updates-to-2-must-have-applications-both-managed-code-both-free-as-in-beer.aspx</id><published>2007-02-22T03:27:12Z</published><updated>2007-02-22T03:27:12Z</updated><content type="html">&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;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author></entry><entry><title>Windows Vista: What Should WebSite Hosters Do?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2007/02/21/windows-vista-what-should-website-hosters-do.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2007/02/21/windows-vista-what-should-website-hosters-do.aspx</id><published>2007-02-21T21:13:04Z</published><updated>2007-02-21T21:13:04Z</updated><content type="html">&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;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author></entry><entry><title>On ItemTemplate, ContentTemplate, DataTemplate</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2007/02/12/on-itemtemplate-contenttemplate-datatemplate.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2007/02/12/on-itemtemplate-contenttemplate-datatemplate.aspx</id><published>2007-02-13T10:33:00Z</published><updated>2007-02-13T10:33:00Z</updated><content type="html">&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;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author></entry><entry><title>Programmer Don't Like to Code</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2007/02/05/programmer-don-t-like-to-code.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2007/02/05/programmer-don-t-like-to-code.aspx</id><published>2007-02-06T07:13:30Z</published><updated>2007-02-06T07:13:30Z</updated><content type="html">&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;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author><category term="Programming" scheme="http://blogs.msdn.com/okoboji/archive/tags/Programming/default.aspx" /></entry><entry><title>Updated Bag-o-Tricks for January</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2007/01/11/updated-bag-o-tricks-for-january.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2007/01/11/updated-bag-o-tricks-for-january.aspx</id><published>2007-01-12T03:10:00Z</published><updated>2007-01-12T03:10:00Z</updated><content type="html">&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;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author></entry><entry><title>A (super rough) Christmas Present</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2006/12/24/a-super-rough-christmas-present.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="12442" href="http://blogs.msdn.com/okoboji/attachment/1356328.ashx" /><id>http://blogs.msdn.com/okoboji/archive/2006/12/24/a-super-rough-christmas-present.aspx</id><published>2006-12-24T12:25:00Z</published><updated>2006-12-24T12:25:00Z</updated><content type="html">&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;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author><category term="WPF" scheme="http://blogs.msdn.com/okoboji/archive/tags/WPF/default.aspx" /></entry><entry><title>Chat with the WPF team tomorrow</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2006/12/20/chat-with-the-wpf-team-tomorrow.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2006/12/20/chat-with-the-wpf-team-tomorrow.aspx</id><published>2006-12-21T03:57:07Z</published><updated>2006-12-21T03:57:07Z</updated><content type="html">&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;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author><category term="WPF" scheme="http://blogs.msdn.com/okoboji/archive/tags/WPF/default.aspx" /></entry><entry><title>Expression Web - beautiful</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2006/12/18/expression-web-beautiful.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2006/12/18/expression-web-beautiful.aspx</id><published>2006-12-19T09:35:02Z</published><updated>2006-12-19T09:35:02Z</updated><content type="html">&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;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author></entry><entry><title>Business Objects are cooler than you think</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2006/12/17/business-objects-are-cooler-than-you-think.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2006/12/17/business-objects-are-cooler-than-you-think.aspx</id><published>2006-12-18T10:37:17Z</published><updated>2006-12-18T10:37:17Z</updated><content type="html">&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;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author></entry><entry><title>New hotness, random musings</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2006/12/13/new-hotness-random-musings.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2006/12/13/new-hotness-random-musings.aspx</id><published>2006-12-14T08:37:07Z</published><updated>2006-12-14T08:37:07Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;Interacting with 2D on 3D in WPF&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Holy hotness!&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Check out &lt;a href="http://blogs.msdn.com/wpf3d/archive/2006/12/12/interacting-with-2d-on-3d-in-wpf.aspx"&gt;details&lt;/a&gt; on the &lt;a href="http://blogs.msdn.com/wpf3d/"&gt;WPF3D Blog&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Check out the &lt;a href="http://channel9.msdn.com/showpost.aspx?postid=266036"&gt;Channel9 interview&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Check out the &lt;a href="http://www.codeplex.com/3DTools"&gt;CodePlex project&lt;/a&gt; (and &lt;a href="http://www.codeplex.com/3DTools/Release/ProjectReleases.aspx?ReleaseId=577"&gt;download the toys&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Go build games for your XBOX&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Too many links. A &lt;a href="http://www.fiercedeveloper.com/story/xbox-make-your-own-games-xna-10-steps-diy"&gt;great write-up&lt;/a&gt; on &lt;a href="http://www.fiercedeveloper.com/"&gt;FierceDeveloper&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Almost makes me want to buy a 360. (But then I wouldn't be coding WPF stuff, right?)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Diane: Space-of-the-week&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Because Diane is female and we both work at Microsoft, I cannot legally use the word "hot" in this section.&amp;nbsp;Diane and I met when we interned the summer of 2001. She's now out on the East Coast evangelizing.&lt;/p&gt; &lt;p&gt;Check out &lt;a href="http://dianecu.spaces.live.com/"&gt;her blog&lt;/a&gt;. Send her a congrats comment and say Kevin told you to do so.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;More teasing&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I've made &lt;a href="http://blogs.msdn.com/okoboji/archive/2006/11/25/what-do-i-love-about-vista-everything-chris-loves.aspx"&gt;some hints&lt;/a&gt; about working on hotness (well, I guess I said "goodness"). I guess a more accurate description would be that I'm coordinating hotness.&lt;/p&gt; &lt;p&gt;Let's just leave it at this: 3DTools is just the start on CodePlex.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;An aside: praise for Zune in Wired?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I love &lt;a href="http://www.wired.com/"&gt;Wired&lt;/a&gt;, but the mag/website tend not to love my company much.&lt;/p&gt; &lt;p&gt;I was happily surprised to see this article: &lt;a href="http://www.wired.com/news/columns/0,72281-0.html"&gt;In Praise of Zune&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Yes, I'm posting a single positive article, while ignoring all of the negative articles from Wired and others. Still think it's nice to see our friends at Wired aren't myopic in their reviews.&lt;/p&gt; &lt;p&gt;Full disclosure, I've only played with the device briefly. But it's nice. If I wasn't so happy with my phone-as-music-player, I'd probably get one.&lt;/p&gt; &lt;p&gt;&lt;em&gt;This post brought to you by &lt;/em&gt;&lt;a href="http://ideas.live.com/programpage.aspx?versionId=4372c8c2-b76f-4d44-aea1-9835b61d8dc1"&gt;&lt;em&gt;Windows Live Writer&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Yes, I made an attempt to proof-read this post. :-)&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1280955" width="1" height="1"&gt;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author><category term="Random" scheme="http://blogs.msdn.com/okoboji/archive/tags/Random/default.aspx" /><category term="WPF" scheme="http://blogs.msdn.com/okoboji/archive/tags/WPF/default.aspx" /></entry><entry><title>What do I love about Vista? Everything Chris loves</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2006/11/25/what-do-i-love-about-vista-everything-chris-loves.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2006/11/25/what-do-i-love-about-vista-everything-chris-loves.aspx</id><published>2006-11-26T09:04:30Z</published><updated>2006-11-26T09:04:30Z</updated><content type="html">&lt;p&gt;&lt;a href="http://www.sellsbrothers.com/"&gt;Mr. Sells&lt;/a&gt; does a great job of &lt;a href="http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2057"&gt;listing the great features of Vista&lt;/a&gt;. (Including some things I don't use enough.)&lt;/p&gt; &lt;p&gt;I had fun bringing my laptop back to Iowa for &lt;strike&gt;&lt;font color="#ff0000"&gt;Christmas&lt;/font&gt;&lt;/strike&gt; Thanksgiving. Everyone I showed just &lt;strike&gt;&lt;font color="#ff0000"&gt;sayed&lt;/font&gt;&lt;/strike&gt; said "wow". I'm proud to have shipped code on the DVD.&lt;/p&gt; &lt;p&gt;I had to uninstall the games because I was playing Free Cell too much. It's just too beautiful.&lt;/p&gt; &lt;p&gt;More WPF goodness coming soon, I promise.&lt;/p&gt; &lt;p&gt;Hope everyone had a good Turkey day!&lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;(Update: I'm also thankful for co-workers who aren't shy to tell me when I make a fool of myself.)&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1151266" width="1" height="1"&gt;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author></entry><entry><title>Bag-O-Tricks : RTM Edition</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2006/11/10/bag-o-tricks-rtm-edition.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2006/11/10/bag-o-tricks-rtm-edition.aspx</id><published>2006-11-10T11:03:00Z</published><updated>2006-11-10T11:03:00Z</updated><content type="html">&lt;p&gt;Okay, I admit I should have a whole mountain of new and sexy stuff for the RTM release. I've been busy lately. Busy with fun stuff. I'm hoping I'll get to talk about it soon. (Yeah, I'm a huge tease. No, I won't be able to share anything with you even if you send me email. Just be patient.)&lt;/p&gt; &lt;p&gt;Anyway, the download location: &lt;a href="http://j832.com/bagotricks/" mce_href="http://j832.com/bagotricks/"&gt;http://j832.com/bagotricks/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The changes:&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;New: ListPager&lt;/font&gt;&lt;/b&gt;&lt;br&gt;&lt;img src="http://blogs.msdn.com/photos/okoboji/images/1053528/original.aspx" style="width: 725px; height: 440px;" alt="" mce_src="http://blogs.msdn.com/photos/okoboji/images/1053528/original.aspx"&gt;&lt;br&gt;I've heard this request a lot: how do I add paging support to ListBox? There are a number of ways to bake support into the control, but there are few ways to do it cleanly.&lt;/p&gt; &lt;p&gt;One of the benefits of WPF is that we have great support for data. Why not solve the problem in the data layer? More specifically, build a data component that can be used in XAML to provide paging services over any IList. Sound good?&lt;/p&gt; &lt;p&gt;&lt;font face="Consolas"&gt;&lt;b&gt;ListPager&lt;/b&gt;&lt;/font&gt; has the magic. It takes an IList as ItemsSource property and exposes a CurrentPage that is a page of items out of the source.&lt;/p&gt; &lt;p&gt;&lt;font face="Consolas"&gt;&lt;b&gt;UIListPager&lt;/b&gt;&lt;/font&gt; takes things a step further by exposing a set of commands that are easily bound to the UI via our command model.&lt;/p&gt; &lt;p&gt;The result: a very clean, extensible model for paging through data.&lt;/p&gt; &lt;p&gt;As a bonus, I built &lt;font face="Consolas"&gt;&lt;b&gt;ListBase&amp;lt;T&amp;gt;&lt;/b&gt;&lt;/font&gt;, since I was getting sick of doing all the work to implement IList&amp;lt;T&amp;gt; and IList. One should only have to provide an indexer and a count. I tried to build this class as clean and correct as possible, but a CLR dev I am not. Let me know how it works for you.&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Update: Graph&lt;/font&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;I fixed some bugs in Graph. All of the nodes should be cleanly and consistently recycled now. I also started playing with changing the location of the nodes using RenderTransform instead of via Arrange.&lt;br&gt;&lt;/p&gt; &lt;p&gt;Now Graph is not a standard control. It has children, but the size of the Graph doesn’t affect the size of the children and vice versa. My goal: minimize the churning of layout when possible. My solution was a bit interesting. I overrode Measure and Arrange in GraphContentPresenter so they always return the same size. The effect: the parent layout is almost never invalidated (except when the number of items changes). Now this is not a 100% blessed model for layout. I need to work through some details with the really smart people on my team. In the mean time, play with caution.&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Update: InfoTextBox&lt;/font&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;A couple of helpful customers pointed out a bug in my implementation. Mouse input was being taken by the “Info” and not getting to the TextBox. A simple property set (IsHitTestVisible=”false”) was all it needed.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1053601" width="1" height="1"&gt;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author></entry><entry><title>How you can tell the bolts are tightening</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2006/09/27/773358.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2006/09/27/773358.aspx</id><published>2006-09-27T10:08:13Z</published><updated>2006-09-27T10:08:13Z</updated><content type="html">&lt;p&gt;I tested the latest &lt;a href="http://blogs.msdn.com/okoboji/archive/2006/09/20/764019.aspx"&gt;rev of the bag-o-tricks&lt;/a&gt; on Vista RC1 (which included the .NET Framework 3.0 RC1) with VS 2005 RTM.&lt;/p&gt; &lt;p&gt;I just did an install of &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c6636e90-26e6-44e0-8780-5d3ccd3d94ed&amp;amp;DisplayLang=en"&gt;.NET 3.0 September CTP&lt;/a&gt; + &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cc77abfa-a000-48d0-98c9-4ae083033d09&amp;amp;DisplayLang=en"&gt;Orcas tools ("Cider") September CTP&lt;/a&gt; + &lt;a href="http://msdn.microsoft.com/vstudio/support/servicing/sp1_vs05/default.aspx"&gt;VS 2005 SP1 Beta&lt;/a&gt; on my XP machine at home.&lt;/p&gt; &lt;p&gt;All of the samples still build and run fine. "Cider" and the VS beta seem to play along nicely, too.&lt;/p&gt; &lt;p&gt;Hurray for locking down!&lt;/p&gt; &lt;p&gt;(I'm pretty sure anyone can apply to be on the beta of VS 2005 SP1. Go to &lt;a href="https://connect.microsoft.com/"&gt;connect.microsoft.com&lt;/a&gt;. Click on &lt;a href="https://connect.microsoft.com/VisualStudio"&gt;Visual Studio and .NET Framework&lt;/a&gt; under &lt;a href="https://connect.microsoft.com/availableconnections.aspx"&gt;Available Connections&lt;/a&gt;. Fill out the &lt;a href="https://connect.microsoft.com/VisualStudio/Survey/NominationSurvey.aspx?SurveyID=2920&amp;amp;ProgramID=857"&gt;Nomination Survey&lt;/a&gt;. At least that's what I did. No promises you'll get in.)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=773358" width="1" height="1"&gt;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author></entry><entry><title>The Bag, the Blogs, the Betas</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/okoboji/archive/2006/09/26/773066.aspx" /><id>http://blogs.msdn.com/okoboji/archive/2006/09/26/773066.aspx</id><published>2006-09-27T04:28:00Z</published><updated>2006-09-27T04:28:00Z</updated><content type="html">&lt;H1&gt;The Bag&lt;/H1&gt;
&lt;P&gt;Glad to see people are &lt;A href="http://wpf.netfx3.com/files/folders/controls/entry5875.aspx"&gt;downloading&lt;/A&gt; the &lt;A href="http://blogs.msdn.com/okoboji/archive/2006/09/20/764019.aspx"&gt;RC1 rev of the bag-o-tricks&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.paulstovell.net/Posts/Post.aspx?postId=aae89bb7-382f-4af5-acef-2dea17adeef7"&gt;Thanks&lt;/A&gt; &lt;A href="http://xamlxaml.com/2006/09/22/kevinbutton-source-now-available/"&gt;for&lt;/A&gt; &lt;A href="http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!697.entry"&gt;the&lt;/A&gt; &lt;A href="http://blogs.msdn.com/alexholy/archive/2006/09/25/770598.aspx"&gt;love&lt;/A&gt;. (Always love to hear I have "&lt;A href="http://blog.vittrup-graversen.dk/archive/2006/09/26/More-on-WPF_2E00_.aspx"&gt;nice code&lt;/A&gt;".) I've already gone down another level on some of the layout tricks I use to get the animation working with layout. I plan on more updates (and hopefully a code walk-through) in the near future.&lt;/P&gt;
&lt;P&gt;Is there a particular demo in the &lt;A href="http://blogs.msdn.com/okoboji/archive/2006/09/20/764019.aspx"&gt;bag-o-tricks&lt;/A&gt; that you'd like me to walk through? I was thinking a screen cast would be a good place to start.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/okoboji/contact.aspx"&gt;Let me know&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;The Blogs&lt;/H1&gt;
&lt;P&gt;Some great blogging happening in WPF land.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://rrelyea.spaces.live.com/"&gt;Rob's making me look bad.&lt;/A&gt; Great info. Now that I sit next door to him in building 10, maybe I can distract him from his constant posting. 
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/mikehillberg/"&gt;Mike Hillberg is a god.&lt;/A&gt; (Not &lt;STRONG&gt;the&lt;/STRONG&gt; God, just &lt;STRONG&gt;a&lt;/STRONG&gt; god.) Not only his he technically brilliant, he's amazingly thorough and a really nice guy. Talk about team mates that make me look bad. &lt;FONT color=#ff0000&gt;(Update: Yes, that's &lt;STRONG&gt;Mike&lt;/STRONG&gt;, not &lt;STRONG&gt;Hike&lt;/STRONG&gt;.)&lt;/FONT&gt;
&lt;LI&gt;&lt;A href="http://thewpfblog.com/"&gt;the WPF blog&lt;/A&gt;. Great use of XBAP for demos. Some...uh..."interesting" content. :-) 
&lt;LI&gt;&lt;A href="http://shellrevealed.com/blogs/default.aspx"&gt;The Windows Shell: Revealed&lt;/A&gt;. Not a WPF blog, but pretty darn cool. My buddy Vinny put it together. Great information about the face of Windows Vista.&lt;/LI&gt;&lt;/UL&gt;
&lt;H1&gt;The Betas&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://firstlook.nytimes.com/?category_name=times%20reader"&gt;The New York Times Reader Beta goes public&lt;/A&gt;. An amazing demo of WPF. The best way to experience the New York Times. Check out the &lt;STRONG&gt;Topic Explorer&lt;/STRONG&gt; in search if you want to see an example of how a graph control can be used in an app. 
&lt;LI&gt;"&lt;A href="http://channel9.msdn.com/wiki/default.aspx/Cider.HomePage"&gt;Cider&lt;/A&gt;" (the WPF designer for VS "Orcas") has been &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cc77abfa-a000-48d0-98c9-4ae083033d09&amp;amp;DisplayLang=en"&gt;updated&lt;/A&gt; for the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c6636e90-26e6-44e0-8780-5d3ccd3d94ed&amp;amp;DisplayLang=en"&gt;September CTP of .NET 3.0&lt;/A&gt;.&amp;nbsp;&lt;A href="http://channel9.msdn.com/wiki/default.aspx/Cider.SeptemberCTPReleaseNotes"&gt;Check out the release notes&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Happy Tuesday.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=773066" width="1" height="1"&gt;</content><author><name>okoboji</name><uri>http://blogs.msdn.com/members/okoboji.aspx</uri></author></entry></feed>