Welcome to Pete Brown's 10rem.net

First time here? If you are a developer or are interested in Microsoft tools and technology, please consider subscribing to the latest posts.

You may also be interested in my blog archives, the articles section, or some of my lab projects such as the C64 emulator written in Silverlight.

(hide this)

Microsoft PDC Day 1 Recap

Pete Brown - 14 September 2005

Microsoft PDC Day 1

Everything Looks Different

The first thing that became clear to me today was that we're in for another user interface revolution, one even larger than the change from Windows 3.x to Windows 95. Windows Presentation Foundation (aka Avalon), Windows Vista, and Office 12 turn your UI world upside down.

A la Carte

Office 12, in its current form, completely does away with the menu and toolbar concepts. Instead, you end up with "Ribbons" which contain common tasks as well as drop down "galleries" of other tasks. At first, this looks very cluttered, but I imagine after some use, it could be quite efficient. Here are some things I think are good take-away points on this topic:

  • Office always leads the pack in UI design. What Office does is what users expect of our apps. It's time for us to learn this new paradigm and ensure we understand how to best put it to work in our own applications.
  • We're going to have to move away from specifying a minimum of 1024x768 for clients. Typically we have no real control over this, but now we'll have a real compelling argument as to why the screens need to be larger: all these ribbons, side bars and other window decorations take up a lot of screen real estate.
  • Office 12 will likely require the largest training effort of any Office upgrade. For that reason, I expect that adoption will be slower than it was for 2000 and 2003 versions.
    • Once folks are trained, I suspect they'll either be more productive, or produce better quality work products as a result.

That's not all Office 12 has in store for us, but that's all I'll comment on until I attend more sessions on the topic.

Rich Media Everywhere

While I find it difficult to imagine where I might use video underlays in our typical business applications, I was really impressed with how integrated all the various media are in WPF and Windows Vista. Having worked with DirectX and Direct 3d a bit, as well as GDI+, I have a decent understanding of how difficult it can be to make these various technologies co-exist. It looks like Windows Vista / WPF have made that happen. It also looks like they've found a good use for all that surplus CPU power we've been investing in ;-)

Animaniacs

Everything is animated. It's almost like flying down into the city in the opening scene of Bladerunner. While tastefully done, it can be overwhelming if you suddenly fixate on it. Buttons pulse, idle images flip around, stuff flashes across the screen etc. For the hung-over in the crowd, they'll hopefully provide  away to turn that off as-needed :-)

3d

If you weren't already aware, everything in the new UI is built on 3d. If you have done any 2d work in Direct3d, you likely already know how this works. Since Direct 3d does not support 2d work natively, you write your 2d animation as 3d work on a 2d plane oriented to the screen/viewer. A benefit of that is that you can suddenly re-orient the plane if you want, and get a nice easy animation of, say, a window spinning away from you in 3d space. While absolutely just eye candy in most of the examples I saw, it does still make for a cool UI.

Windows Presentation Foundation and XAML

WPF and XAML are two topics that greatly interest me. While I find myself working all over the place in applications, my heart has always been in UI design and human factors. To that end, I've spent a lot of time writing special code to make windows forms apps look "pretty" or "more webbish" while still retaining the strong benefits of windows forms (yes, I'm a windows forms bigot. IMHO, if you're writing "web apps" that aren't served up on the public internet and used cross-browser, you're using the wrong presentation and client technology)

Key points:

  • WPF has seven key concepts:
    • Applications - A way to scope what you are doing, and the outermost container for the app
    • Controls - Just like Windows Forms controls in concept, only much cooler
    • Styling - Think CSS for Windows apps
    • Layout - Positioning of elements on the screen, including table layouts
    • Data - What you plan to display
    • Content - FlowDocuments, media and other types of rich content
    • Actions - Events and interactions
  • XAML is not required for WPF applications, but if used, does provide a neat way to separate presentation from code. Think of it as a model very similar to that used by ASP.NET
  • Support for very smooth scaling is important. You're not limited to just certain font sizes or window sizes. Everything in a window can smoothly scale from tiny to full screen or larger. This is really impressive to see in action
  • Layout on forms typically uses grids just like we used to do in pre-CSS2 HTML
    • I find it amusing that windows forms and web forms are heading to where each other started. Current CSS changes have made absolute positioning and finite control of layout for web apps very reasonable, whereas WPF brings windows-type apps back to table layout instead of using absolute positioning.
      • No, table layout (grid) is not required, but if you want to take advantage of much of the scaling, you'll very likely need to use their grid.
  • Excellent support for all types of media including video and vector graphics
  • Namespaces in XAML are very important when you want to use your own classes in XAML markup.
    • <?Mapping XmlNamespace="myapp" ClrNamespace="Lap" ?>
    • ... xmlns:my="myapp"
    • <my:Patient FirstName="Pete" LastName="Brown" />
  • <Style> tags provide a way to perform similar functionality to CSS matching rules. For example, you can say that all listboxes on your form will have the following properties set to the following values.
  • <Style.Triggers> tag provides a way to add functionality the control designer may not have thought of. An example would be to have a different color for selected items:
    • <Trigger Property="IsSelected" Value="True"> ... </Trigger>
    • The above would apply the styles inside the trigger (the style being just a property name and a value, so it could be anything the control exposes) when IsSelected is true. This is very powerful, as you are no longer locked into what a control designer thinks you might need.
  • Along the same lines (full control), you have complete control over the rendering for everything using templates. No longer do you need to pick a listbox control that explicitly supports images. Instead, you just set the rendering template for what you put in the listbox to be something that includes images.
    • Example, a patient object might display the patient name, account number and photo all in a well-laid-out line with a gradient background. To do this, you set the template for that patient object to be your own XAML markup. This is incredibly powerful as it provides the designer, when combined with the other features, with almost absolute control over how the UI will look. It's about time!
  • Static Resources provide a way to apply CSS-like definitions to your XAML controls:

<Window.Resources>
    <ResourceDictionary>
        <LinearGradientBrush x:Key="niceGradient" ... />
    </ResourceDictionary>
</Window.Resources>
...
<Rectangle ... Fill="{StaticResource niceGradient}" />
...

  • Note the {} above. That tells the XAML compiler not to use the object's type converter to convert that value. Instead it is handled via a lookup.

IDE support for XAML is pretty weak right now. The presenter, Rob Relyea, used Mobiform Aurora to do the XAML editing. I can see how that would make it a bit easier, but that product looked pretty rough.

WPF also includes a lot more, and integrations with workflow and the communications foundation. As I learn more about those this week, I'll post here.

Swag!

Of course, the highlight of my day was the deal I got on a new Windows Mobile device. I was one of the lucky folks that managed to pick up an i-mate JASJAR Windows Mobile 5.0 device for the PDC price of $149. According to Mobile Planet and Microsoft, that's $850 off the normal price. Since I was planning on picking up a Windows Mobile PDA here at the PDC, I was pretty excited when that was announced. It took no time at all for these guys to sell out, so ducking out of the keynote for 10 minutes was well worth it :-)

Now I finally have something to control my trains.

Tomorrow

I'm looking forward to spending most of tomorrow in WPF presentations, and ending the day with what looks to be an interesting presentation on Atlas. So tomorrow is definitely a presentation layer day for me. Later in the week, I'll spend some more time on Windows Communcations Foundation (Indigo) and report back here.

Others

Biff Gaut has some pretty detailed observations here, including more detail on the keynotes.

 
posted by Pete Brown on Wednesday, September 14, 2005
filed under:  

Comment on this Post

Remember me