On TheServerSide.net community site there is a question, “Will Enterprises Adopt Avalon?”
At the PDC this year (2005), we saw lots of Avalon (WPF) apps that had beautiful images with reflections, and videos floating through the air. All very cool.
During one of the breakout sessions I was able to chat with Filipe Fortes from the Avalon team about the fact that every new Avalon app dealt with multi media, with the exception of the medical demo which used some very nice real time charting.
I told him that I’d like to see some Avalon (I mean WPF) apps that didn’t have images or video, yet did show the power of the new platform in a LOB (line of business) application. He concurred that most of the demos were media based and told me to wait for his presentation. His presentation titled "Creating Rich Content Experiences in Your WPF/Avalon Applications" dealt with presentation and layout of content (text, images, etc.) and how the new platform enhances our experience. I think people overlook the importance of layout and presentation of textual data. If you've ever read a tech book you'll notice that it's layout is done in a certain way. This is to make the content easier to consume. If you pay attention to the same layout and presentation details your apps will have a better experience.
Here are some ways that Avalon (WPF) can enhance a LOB application.
Zooming, Transitions, Layout, and Storyboards
Zooming (aka transforms) will probably be one of the things that we’ll see used effectively quite a bit.
Transitions will be helpful if they are used in the correct manner. One perfect example of this is the picture rearrangement in the Microsoft Max application. The pictures move on the page to their new location when you resize the page. This help you not lose track of where things are located. You can find the code for this on Dan's blog.
Layout - Using sensible layout will help any application. A good example of one way to do this is with text is by using the SinglePageViewer. Filipe Fortes currently has a thread on the it. (http://fortes.com/work) A good thing about this control is that if you have multiple tables of data you could host them in this control and give your customers the control of zooming out to see multiple tables of data at once or to zoom in and inspect that table with closer scrutiny and page through the results. All of the zooming and pagination are handled by the control.
Storyboards - Here's a scenario: Your "Grass Slayer 4000" grass trimmer is not working and you need to replace the carburetor. You need to find where the carburetor is located. You could visit your friendly local URL for the maker of the Grass Slayer 4000, go to the product page for it and a WBA is loaded. In this WBA you could get a 3D view of the product in which you could "explode" the grass trimmer into it's respective parts. (Exploding views of products could be created using Storyboards. ) I get context as to where the part goes and how it goes back together and I could even order the replacement on that page. This scenario is based on personal experience with a online product manual (pdf - not very functional) and I still don't know were my damn carburetor is located!
Once people get the chance to play with Avalon we’ll start to see new controls and data visualizations hit the market and these can be incorporated into our Avalon vocabulary.
Until then, using these four features can be used to enhance a standard business app, as long as they're not abused.
A couple of footnotes:/
TSS - "Is your your company ready to leverage visualizations." Yes, we're just working with the correct way to use these and then test the experience of the people that use our applications.
TSS - "Do you think Avalon is just a Microsoft attempt to kill Flash?" No, it's more of a logical next step for UX (User Experience). As more and more devices try to garner our attention with different User Interfaces (Think Xbox 360, Ipod, PSP, Tivo, your cell phone) Microsoft has to provide developers a way to create new experiences, without us all having to resort to DirectX programming for our app's.