<?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>IRhetoric - Karsten Januszewski   : Expression Blend</title><link>http://blogs.msdn.com/karstenj/archive/tags/Expression+Blend/default.aspx</link><description>Tags: Expression Blend</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>COLLABORATING ON CREATING ANIMATIONS IN WPF AND BLEND: POSSIBILITIES AND LIMITATIONS</title><link>http://blogs.msdn.com/karstenj/archive/2007/06/20/collaborating-on-creating-animations-in-wpf-and-blend-possibilities-and-limitations.aspx</link><pubDate>Thu, 21 Jun 2007 02:16:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3433330</guid><dc:creator>karstenj</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/karstenj/comments/3433330.aspx</comments><wfw:commentRss>http://blogs.msdn.com/karstenj/commentrss.aspx?PostID=3433330</wfw:commentRss><description>&lt;p&gt;One area that is currently top of mind for me is designer and developer collaboration with WPF and Expression Blend, in particular around animation.&amp;nbsp; I'd like to start documenting some techniques and outlining things that can and can't be done.&amp;nbsp;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Before diving in, let's quickly review the animation system in WPF.&amp;nbsp; The two ways to do animation in WPF is either declaratively (XAML) or procedurally (code).&amp;nbsp;&amp;nbsp;&amp;nbsp;If you use Expression Blend to create your animations, you will be in effect using the declarative (XAML) method.&amp;nbsp; What gets slightly confusing is that the two methods, declarative and procedural,&amp;nbsp;are not entirely in parallel.&amp;nbsp; For example, the only way to begin an animation declaratively (XAML) is through the &amp;lt;&lt;strong&gt;BeginStoryboard&lt;/strong&gt;&amp;gt; tag.&amp;nbsp; However, the equivalent call in code is to call the &lt;strong&gt;Begin&lt;/strong&gt; method off a &lt;strong&gt;UIElement&lt;/strong&gt; and&amp;nbsp; passing it the storyboard to fire.&amp;nbsp; The other option is to call the &lt;strong&gt;Begin&lt;/strong&gt; method from a storyboard itself, passing it the &lt;strong&gt;UIElement&lt;/strong&gt; to which the storyboard should be applied. And, in code, you can trigger animations that don't even have storyboards using&amp;nbsp;the &lt;strong&gt;ApplyAnimationClock&lt;/strong&gt; or &lt;strong&gt;BeginAnimation&lt;/strong&gt; directly off a &lt;strong&gt;UIElement&lt;/strong&gt;.&amp;nbsp; (More on this later if you're confused. The syntax is, like much of WPF, a little tricky.)&lt;/p&gt; &lt;p&gt;But all of the above -- and &lt;a href="http://msdn2.microsoft.com/en-us/library/ms752312.aspx"&gt;much of the SDK documentation on animation&lt;/a&gt; -- assumes that you have chosen either one or the other.&amp;nbsp; What happens if you want to mix and match these two methods?&amp;nbsp; This particularly comes into play if you are working on a project where animations get created in Blend but then need to be manipulated, triggered and recontextualized from code.&amp;nbsp; And it potentially gets more tricky if you have multiple people working on the project, the classic scenario being one person who creates the animations in Blend and another who works with those animations in code. &lt;/p&gt; &lt;p&gt;So, let's look at the possibilities:&lt;/p&gt; &lt;p&gt;&lt;font size="4"&gt;1. How to&amp;nbsp;trigger a storyboard from code that was created in Blend.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Let's say we have an animation in Blend to do&amp;nbsp;an opacity fade on an&amp;nbsp;image.&amp;nbsp; Assuming it was created&amp;nbsp;&amp;nbsp;by creating a new timeline and leave the "Create as a resource" checkbox checked, we can get at it from code pretty easily.Simply grab the storyboard from the resources, cast it appropriately&amp;nbsp;and begin it.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;Storyboard s = (Storyboard) this.FindResource("FadeIn");&lt;br&gt;this.BeginStoryboard(s);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Now, the reason this works is that the storyboard itself contains information about the name of the object that it wants to animate.&amp;nbsp; If you look at the storyboard &lt;a href="http://winfx.members.winisp.net/files/animationcollab.zip"&gt;in the sample code I posted&lt;/a&gt;, it sets the &lt;strong&gt;Storyboard.TargetName&lt;/strong&gt; value explicitly to the name "image".&amp;nbsp; Thus, when the storyboard is called from the page itself via &lt;strong&gt;BeginStoryboard&lt;/strong&gt;, it is able to find the element named image and run the animations. But what happens if we want to generically apply that animation that was created in Blend to other elements? &lt;/p&gt; &lt;p&gt;&lt;font size="4"&gt;2. How to trigger a storyboard from code and apply it to another UI element&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Well, to accomplish this task, we need to start hacking XAML.&amp;nbsp; If this scares you, don't read on.&amp;nbsp; But the fact is that XAML generated from Blend sometimes needs a little love. So, in this case, we are going to copy that storyboard.&amp;nbsp; We can't do that without jumping into the XAML and manually coping the entire &amp;lt;Storyboard&amp;gt; and giving it a new x:Key. Once we've done that, we have manually remove every instance where &lt;strong&gt;Storyboard.TargetName&lt;/strong&gt; is set.&amp;nbsp; Literally, remove the entire&amp;nbsp;attribute. Now, we can apply this storyboard to any &lt;strong&gt;UIElement&lt;/strong&gt; and not just images.&amp;nbsp;&amp;nbsp;In this case, we call the &lt;strong&gt;Begin&lt;/strong&gt; method from the storyboard itself, passing the element we want&amp;nbsp;the storyboard to be applied to.&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;Storyboard s = (Storyboard)this.FindResource("FadeIn2");&lt;br&gt;s.Begin(textBlock);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;The thing to watch out for with this technique is to make sure you call the storyboard on an element that in fact has all the properties referenced in the storyboard.&amp;nbsp; Otherwise, you'll get a runtime exception that says something like:&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;Additional information: '[Unknown]' property does not point to a DependencyObject in path '(0).(1).[0].(2)'.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Which is saying that the animation could find the property that it was told to animate.&amp;nbsp; A place where this can get you is if you are doing any Transform animations, such as Scale, Translate, Rotate or Skew.&amp;nbsp; By default, when you add an element to Blend, it does not create a TransformGroup for it. For example, go to Blend, add a &lt;strong&gt;Rectangle&lt;/strong&gt; to the stage and see what it creates in XAML. It won't have a &lt;strong&gt;RenderTransform&lt;/strong&gt;.&amp;nbsp; Now, go change its scale to 2 and then change it back to 1.&amp;nbsp; Now look at its XAML: a RenderTransform has been permanently added to it as a child which doesn't do anything! Blend counts on that &lt;strong&gt;TransformGroup&lt;/strong&gt; for doing its animations, in that exact order (Scale, Skew, Rotate, Translate).&amp;nbsp; So, if you've created an animation that does a transform and you want to apply it to some other element, be sure that the element has a &lt;strong&gt;TransformGroup&lt;/strong&gt; with the four transforms.&lt;/p&gt; &lt;p&gt;&lt;font size="4"&gt;3. How to tweak an animation created in Blend on the fly in code&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Let's say there's an animation created in Blend that you want to use, but you want to actually modify it with some dynamic values at runtime, maybe adding more animation.&amp;nbsp; First, you grab the storyboard and clone it so you have a new instance to party on. Then, you create your animation in code -- that's where you could insert dynamic variables.&amp;nbsp; Finally, you have to create a property path to the value you want animated.&amp;nbsp; The syntax is a little goofy, but once you crack its code as far as a path (&lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.propertypath.path.aspx"&gt;good doc here&lt;/a&gt;) you'll be off and running.&amp;nbsp; Here's the code I used to add a scale animation on the fly:&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;Storyboard s = ((Storyboard)this.FindResource("FadeIn2")).Clone();&lt;br&gt;DoubleAnimation da = new DoubleAnimation(0, 1, TimeSpan.FromSeconds(1), FillBehavior.HoldEnd);&lt;br&gt;Storyboard.SetTargetProperty(da, new PropertyPath("(0).(1).[0].(2)", UIElement.RenderTransformProperty,&lt;br&gt;TransformGroup.ChildrenProperty,&lt;br&gt;ScaleTransform.ScaleXProperty));&lt;br&gt;s.Children.Add(da);&lt;br&gt;s.Begin(rectangle);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;You could use a similar technique to crack into the storyboard, grab an animation that was created in XAML and tweak it.&amp;nbsp; So for example, we could grab the animation from the storyboard and change its begin time like this:&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;DoubleAnimationUsingKeyFrames d = (DoubleAnimationUsingKeyFrames)s.Children[0];&lt;br&gt;d.BeginTime = TimeSpan.FromSeconds(.5);&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="4"&gt;4. How to crack into an animation that is part of a DataTemplate&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Doh! You can't!&amp;nbsp; I tried every workaround I could, but once a &lt;strong&gt;ContentTemplate&lt;/strong&gt; gets loaded, it is in the WPF terminology "Sealed" and I've never seen a way to make it unsealed, even before it is added to the visual tree.&amp;nbsp; Bummer.&lt;/p&gt; &lt;p&gt;**********************************&lt;/p&gt; &lt;p&gt;So where are we?&amp;nbsp; We've&amp;nbsp;learned&amp;nbsp;some techniques such that a design technologist or interactive designer or diviner (or whatever they are called) can work in Blend, creating subtle and great animations and then, if there are scenarios where the developer or integrator or diviner (or whatever they are called) needs to start that animation, reuse that animation or tweak that animation on the fly, they can. Go WPF!&lt;/p&gt; &lt;p&gt;&lt;a href="http://winfx.members.winisp.net/files/animationcollab.zip"&gt;Download the code&lt;/a&gt;&lt;/p&gt;&lt;img src="http://winfx.members.winisp.net/files/snowboard.jpg"&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3433330" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/karstenj/archive/tags/Windows+Presentation+Foundation+_2800_Avalon_2900_/default.aspx">Windows Presentation Foundation (Avalon)</category><category domain="http://blogs.msdn.com/karstenj/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/karstenj/archive/tags/Expression+Blend/default.aspx">Expression Blend</category></item><item><title>FLITTERBOOK: INTEGRATING WITH THE FACEBOOK PLATFORM</title><link>http://blogs.msdn.com/karstenj/archive/2007/05/24/flitterbook-integrating-with-the-facebook-platform.aspx</link><pubDate>Fri, 25 May 2007 08:50:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2861820</guid><dc:creator>karstenj</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/karstenj/comments/2861820.aspx</comments><wfw:commentRss>http://blogs.msdn.com/karstenj/commentrss.aspx?PostID=2861820</wfw:commentRss><description>&lt;p&gt;I'm here at the &lt;a href="http://www.techcrunch.com/2007/05/24/facebook-launches-facebook-platform-they-are-the-anti-myspace/"&gt;Facebook Developer's event&lt;/a&gt; down here in San Francisco.&amp;nbsp; Dan'l Lewin from Microsoft was on stage as a parter:&lt;/p&gt; &lt;p&gt;&lt;img src="http://farm1.static.flickr.com/189/512719401_40f6dd4b74_m.jpg"&gt; &lt;/p&gt; &lt;p&gt;Lots of good stuff announced as far as Facebook/Microsoft partnership: Microsoft just released &lt;a href="http://blogs.msdn.com/coding4fun/archive/2007/05/24/2854939.aspx"&gt;a great wrapper to the Facebook API&lt;/a&gt;&amp;nbsp;written by the guys at &lt;a href="http://www.claritycon.com/"&gt;Clarity Consulting&lt;/a&gt;.&amp;nbsp; They've got some nice sample applications, including a cool WPF app that is a rolodex of your Facebook contacts.&lt;/p&gt; &lt;p&gt;&lt;img src="http://farm1.static.flickr.com/223/512983829_e2f4f63dbf_m.jpg"&gt; &lt;/p&gt; &lt;p&gt;&lt;br&gt;Also, Popfly also added support for the Facebook API to their mashup builder.&amp;nbsp; Speaking of Silverlight, there's support for Silverlight in FBML via the FB:Silverlight tag, although it is undocumented right now and not quite there.&amp;nbsp; However, you can host Silverlight in an iframe using FBML.&amp;nbsp; More on that to come.&lt;/p&gt; &lt;p&gt;I&amp;nbsp;implemented in an updated version of Flitterbook, which you can download &lt;a href="http://blogs.msdn.com/coding4fun/attachment/2854939.ashx"&gt;here&lt;/a&gt;.&amp;nbsp; This version of Flitterbook now has support for the Facebook API and pulls all images from your friends along with Twitter feeds and Flickr data.&amp;nbsp; Again, this is still alpha code: no promises!&lt;/p&gt; &lt;p&gt;One thing I implemented in Flitterbook is support for infinite sessions with Facebook.&amp;nbsp; There aren't any code samples for this in the samples that ship with the Facebook&amp;nbsp; Developer Toolkit so I thought it might be useful for other folks. I save the Facebook infinite session data in a user config file using Visual Studio. The crux is that you have to pass your own secret if you don't have a secret that gets returned from Facebook to support an infinite session.&amp;nbsp; Here's the code:&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;//set infinite session parameters on to facebook data adapter&lt;br&gt;if (Settings.Default.IsFacebookInfiniteSession)&lt;br&gt;{&lt;br&gt;&amp;nbsp; facebookConnect.UserId = Settings.Default.FACEBOOK_USERID;&lt;br&gt;&amp;nbsp; facebookConnect.SessionKey = Settings.Default.FACEBOOK_SESSIONKEY;&lt;br&gt;&amp;nbsp; //note here that we pass the secret that we saved&lt;br&gt;&amp;nbsp; facebookConnect.Secret = Settings.Default.FACEBOOK_SECRET;&lt;br&gt;}&lt;br&gt;else&lt;br&gt;{&lt;br&gt;&amp;nbsp; //if we don't have an infinite session, we use my application's secret&lt;br&gt;&amp;nbsp; facebookConnect.Secret = secret;&lt;br&gt;&amp;nbsp; //we invoke the UI dialog&lt;br&gt;&amp;nbsp; facebookConnect.ConnectToFacebook();&lt;br&gt;&amp;nbsp; //if the user let us save their session, throw it in config&lt;br&gt;&amp;nbsp; if (!facebookConnect.SessionExpires)&lt;br&gt;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Settings.Default.FACEBOOK_SESSIONKEY = facebookConnect.SessionKey;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Settings.Default.FACEBOOK_USERID = facebookConnect.UserId;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Settings.Default.FACEBOOK_SECRET = facebookConnect.Secret;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Settings.Default.IsFacebookInfiniteSession = true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Settings.Default.Save();&lt;br&gt;&amp;nbsp; }&lt;br&gt;}&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2861820" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/karstenj/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/karstenj/archive/tags/Expression+Blend/default.aspx">Expression Blend</category></item><item><title>THREE NEW EXPRESSION BLEND HANDS-ON LABS</title><link>http://blogs.msdn.com/karstenj/archive/2007/05/22/three-new-expression-blend-hands-on-labs.aspx</link><pubDate>Tue, 22 May 2007 17:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2793871</guid><dc:creator>karstenj</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/karstenj/comments/2793871.aspx</comments><wfw:commentRss>http://blogs.msdn.com/karstenj/commentrss.aspx?PostID=2793871</wfw:commentRss><description>&lt;P&gt;I just posted three new hands-on labs for Expression Blend that were created for MIX but haven't been posted for the world yet.&amp;nbsp;There's lots of little nuggets in there worth checking out, things like creating a user controls, databinding, triggers, styling controls, using web services, paging, data input&amp;nbsp;and more.&amp;nbsp; The more I use Blend, the more I love it, but it has &lt;A href="http://blogs.msdn.com/karstenj/archive/2006/04/05/curve.aspx" mce_href="http://blogs.msdn.com/karstenj/archive/2006/04/05/curve.aspx"&gt;its own learning curve&lt;/A&gt;, above and beyond WPF.&lt;/P&gt;
&lt;P&gt;The first lab is a UI for Windows Live Search, including Image Search.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://winfx.members.winisp.net/images/live.jpg" mce_src="http://winfx.members.winisp.net/images/live.jpg"&gt; &lt;/P&gt;
&lt;P&gt;The second lab is a color swatch lab.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://winfx.members.winisp.net/images/swatch.jpg" mce_src="http://winfx.members.winisp.net/images/swatch.jpg"&gt; &lt;/P&gt;
&lt;P&gt;The third lab is a recipe viewer application.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://winfx.members.winisp.net/images/recipe.jpg" mce_src="http://winfx.members.winisp.net/images/recipe.jpg"&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2793871" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/karstenj/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/karstenj/archive/tags/Expression+Blend/default.aspx">Expression Blend</category></item><item><title>EXPRESSION BLEND RELEASE CANDIDATE 1: SIX NEW SAMPLES!</title><link>http://blogs.msdn.com/karstenj/archive/2007/03/15/expression-blend-release-candidate-1-six-new-samples.aspx</link><pubDate>Thu, 15 Mar 2007 20:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1888619</guid><dc:creator>karstenj</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/karstenj/comments/1888619.aspx</comments><wfw:commentRss>http://blogs.msdn.com/karstenj/commentrss.aspx?PostID=1888619</wfw:commentRss><description>&lt;P&gt;Expression Blend Release Candidate 1 is now available for &lt;A href="http://www.microsoft.com/products/expression/en/Expression-Blend/try.mspx" mce_href="http://www.microsoft.com/products/expression/en/Expression-Blend/try.mspx"&gt;download&lt;/A&gt;.&amp;nbsp; The product keeps getting better, able to render more on its design surface, more stable, better documented and tons of great new samples.&amp;nbsp; The samples are quite crisp from a design point of view with a designer's eye.&amp;nbsp;&amp;nbsp;If you want to get the actual&amp;nbsp;source and&amp;nbsp;assets, you'll have to download Blend, but if you want to just check them out,&amp;nbsp; I've posted screenshots of all six and uploaded them&amp;nbsp;via ClickOnce using the Publish Wizard in Visual Studio so that you can run them directly:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://wpf.netfx3.com/direct/AnimationStudio/AnimationStudio.application" mce_href="http://wpf.netfx3.com/direct/AnimationStudio/AnimationStudio.application"&gt;Animation Studio&lt;/A&gt;: This is a nifty little animation drawing tool.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://wpf.netfx3.com/direct/AnimationStudio/AnimationStudio.application" target=_blank mce_href="http://wpf.netfx3.com/direct/AnimationStudio/AnimationStudio.application" border="0"&gt;&lt;IMG src="http://wpf.netfx3.com/direct/AnimationStudio/AnimationStudio.jpg" border=0 mce_src="http://wpf.netfx3.com/direct/AnimationStudio/AnimationStudio.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://wpf.netfx3.com/direct/ColorSwatch/ColorSwatch.application" mce_href="http://wpf.netfx3.com/direct/ColorSwatch/ColorSwatch.application"&gt;Color Swatch&lt;/A&gt;: An app that allows you do envision different color possibilities for interior decorating.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://wpf.netfx3.com/direct/ColorSwatch/ColorSwatch.application" mce_href="http://wpf.netfx3.com/direct/ColorSwatch/ColorSwatch.application" border="0"&gt;&lt;IMG alt=colorswatch src="http://inlinethumb41.webshots.com/3624/2354475180100818464S500x500Q85.jpg" border=0 mce_src="http://inlinethumb41.webshots.com/3624/2354475180100818464S500x500Q85.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://wpf.netfx3.com/direct/GrandPiano/grandpiano.application" mce_href="http://wpf.netfx3.com/direct/GrandPiano/grandpiano.application"&gt;GrandPiano&lt;/A&gt;: Play the piano!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://wpf.netfx3.com/direct/GrandPiano/grandpiano.application" mce_href="http://wpf.netfx3.com/direct/GrandPiano/grandpiano.application" border="0"&gt;&lt;IMG alt=grandpiano src="http://inlinethumb12.webshots.com/1419/2856086320100818464S500x500Q85.jpg" border=0 mce_src="http://inlinethumb12.webshots.com/1419/2856086320100818464S500x500Q85.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://wpf.netfx3.com/direct/PhotoBook/photobook.application" mce_href="http://wpf.netfx3.com/direct/PhotoBook/photobook.application"&gt;Photo Book&lt;/A&gt;: Flipping a book of images using 2 1/2 D.&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://wpf.netfx3.com/direct/PhotoBook/photobook.application" mce_href="http://wpf.netfx3.com/direct/PhotoBook/photobook.application" border="0"&gt;&lt;IMG src="http://inlinethumb37.webshots.com/356/2494126300100818464S500x500Q85.jpg" border=0 mce_src="http://inlinethumb37.webshots.com/356/2494126300100818464S500x500Q85.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://wpf.netfx3.com/direct/VideoShelf/videoshelf.application" mce_href="http://wpf.netfx3.com/direct/VideoShelf/videoshelf.application"&gt;Video Shelf&lt;/A&gt;: Video mapped onto 3D planes, library like navigation.&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://wpf.netfx3.com/direct/VideoShelf/videoshelf.application" mce_href="http://wpf.netfx3.com/direct/VideoShelf/videoshelf.application" border="0"&gt;&lt;IMG src="http://inlinethumb10.webshots.com/1033/2757060930100818464S500x500Q85.jpg" border=0 mce_src="http://inlinethumb10.webshots.com/1033/2757060930100818464S500x500Q85.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://wpf.netfx3.com/direct/viewer3d/viewer3d.application" mce_href="http://wpf.netfx3.com/direct/viewer3d/viewer3d.application"&gt;Viewer3D&lt;/A&gt;: A motorcycle with particular camera moves to highlight different features&lt;/P&gt;
&lt;P&gt;&lt;A class="" href="http://wpf.netfx3.com/direct/viewer3d/viewer3d.application" mce_href="http://wpf.netfx3.com/direct/viewer3d/viewer3d.application" border="0"&gt;&lt;IMG src="http://inlinethumb04.webshots.com/835/2159255260100818464S500x500Q85.jpg" border=0 mce_src="http://inlinethumb04.webshots.com/835/2159255260100818464S500x500Q85.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1888619" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/karstenj/archive/tags/Expression+Blend/default.aspx">Expression Blend</category></item><item><title>Expression Blend Training: New Lab Posted, Training Wiki Updated</title><link>http://blogs.msdn.com/karstenj/archive/2007/02/28/expression-blend-training-new-lab-posted-training-wiki-updated.aspx</link><pubDate>Thu, 01 Mar 2007 02:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1776320</guid><dc:creator>karstenj</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/karstenj/comments/1776320.aspx</comments><wfw:commentRss>http://blogs.msdn.com/karstenj/commentrss.aspx?PostID=1776320</wfw:commentRss><description>&lt;P&gt;This summer, I posted a &lt;A class="" href="http://blogs.msdn.com/karstenj/archive/2006/06/15/632639.aspx" target=_blank mce_href="http://blogs.msdn.com/karstenj/archive/2006/06/15/632639.aspx"&gt;five day course for WPF&lt;/A&gt;.&amp;nbsp; While this content is all still relevant, using a blog to disseminate this&amp;nbsp;information is, well, so old school.&amp;nbsp; Unless I constantly update the post, it doesn't have all the latest and greatest sites, tutorials, books and more.&amp;nbsp; Wikis make so much more sense for this purpose, such that the content stays fresh and, as new content comes online,&amp;nbsp;others can update it.&amp;nbsp;&amp;nbsp;Hopefully, that will happen up on the &lt;A class="" href="http://channel9.msdn.com/wiki/default.aspx/WPF.LearningWPF" target=_blank mce_href="http://channel9.msdn.com/wiki/default.aspx/WPF.LearningWPF"&gt;Learning WPF and Expression Blend Wiki page&lt;/A&gt;, which is a great resource.&lt;/P&gt;
&lt;P&gt;The big thing missing from that five day course is Expression Blend training.&amp;nbsp; Blend is trickier to learn, as reading about using it is much less helpful than watching someone else use the tool and then trying it yourself.&amp;nbsp; There is now a decent amount of screencasts and labs out there for learning Blend, but (until now) you had to know where to look.&amp;nbsp; To make this easier, I've aggregated these up on the &lt;A class="" href="http://channel9.msdn.com/wiki/default.aspx/WPF.LearningWPF" target=_blank mce_href="http://channel9.msdn.com/wiki/default.aspx/WPF.LearningWPF"&gt;Learning WPF and Expression Blend Wiki page&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Included in that list is &lt;A class="" href="http://wpf.netfx3.com/files/folders/labs/entry9074.aspx" target=_blank mce_href="http://wpf.netfx3.com/files/folders/labs/entry9074.aspx"&gt;a new lab that I just uploaded&lt;/A&gt; which explains workflow between Expression Design and Expression Blend.&amp;nbsp; It shows a very nifty technique of tracing a bitmap in order to create a vector based asset.&lt;/P&gt;
&lt;P&gt;As more of this kind of content comes online, I hope that the community at large will keep this wiki up-to-date.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1776320" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/karstenj/archive/tags/Expression+Blend/default.aspx">Expression Blend</category></item><item><title>Announcing Expression Blend Beta 2 and Expression Design Beta 1</title><link>http://blogs.msdn.com/karstenj/archive/2007/01/30/announcing-expression-blend-beta-2-and-expression-design-beta-1.aspx</link><pubDate>Wed, 31 Jan 2007 08:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1561764</guid><dc:creator>karstenj</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/karstenj/comments/1561764.aspx</comments><wfw:commentRss>http://blogs.msdn.com/karstenj/commentrss.aspx?PostID=1561764</wfw:commentRss><description>&lt;P&gt;You can now go download &lt;A class="" href="http://www.microsoft.com/products/expression/en/Expression-Blend/try.mspx" target=_blank mce_href="http://www.microsoft.com/products/expression/en/Expression-Blend/try.mspx"&gt;Expression Blend Beta 2&lt;/A&gt; as well as &lt;A class="" href="http://www.microsoft.com/products/expression/en/expression-design/free-trial.mspx" target=_blank mce_href="http://www.microsoft.com/products/expression/en/expression-design/free-trial.mspx"&gt;Expression Design Beta 1&lt;/A&gt;. Both applications have received significant work since their last incarnation with tons of bugs fixed. Go give 'em a whirl.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 312px; HEIGHT: 213px" height=213 src="http://www.microsoft.com/products/expression/en/images/ex-blend/boxShot_Blend.jpg" width=312 mce_src="http://www.microsoft.com/products/expression/en/images/ex-blend/boxShot_Blend.jpg"&gt;&lt;IMG style="WIDTH: 312px; HEIGHT: 213px" height=213 src="http://www.microsoft.com/products/expression/en/images/ex-design/boxShot_Design.jpg" width=312 mce_src="http://www.microsoft.com/products/expression/en/images/ex-design/boxShot_Design.jpg"&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1561764" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/karstenj/archive/tags/Windows+Presentation+Foundation+_2800_Avalon_2900_/default.aspx">Windows Presentation Foundation (Avalon)</category><category domain="http://blogs.msdn.com/karstenj/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/karstenj/archive/tags/Avalon/default.aspx">Avalon</category><category domain="http://blogs.msdn.com/karstenj/archive/tags/Expression+Blend/default.aspx">Expression Blend</category></item></channel></rss>