Top 3 of Mix08 (for me)

1. The Cirque du Soleil keynote demo, the most engaging articulation of WPF’s “richer, smarter, more productive line-of-business app” message since Avalon Healthcare. 2. More Microsoft Research innovation sees the light of day in the product groups and for developers at large. Deep Zoom becomes available to developers through Silverlight and demoed by the Hard Rock Cafe, [...]

Bring Your Data to Life with WPF Session

The premise behind this session is the idea of separation of UI designers and developers. The UI people don't know how to code business rules. But the UI people need to be able to 'try out' the user interface and easily make changes. This is the designer/developer separation that is in the Web space, only in this case, it's for Windows Forms applications.

For those of you who aren't aware, one of the drawbacks of WPF is the lack of data binding support. This is a significant step back in functionality, if you're used to creating ASP.NET or Windows Forms apps. And it stopped me from using WPF to any great extent.

The session starts out slow, talking about the rationale behind data binding. This is something that I would expect most developers to be aware of, although if he's including designers in his target audience, then I can understand the digression.

Databinding in a WPF form can be done through the latest version of Expression Blend. A new Data pane allows for the selection of a data source (a class, for example). Once the data source has been specified, the property sheet for a control allow the mapping between the control's property and the data source's property to be made. This is a familiar process, although very new to WPF and Expression Blend.

WPF includes the concept of a value converter. This is a function that operates on a bound value with the result from the conversion being displayed. As well, the data binding appears to be hooked up to the property change notification mechanism, in that if a property is programmatically changed, the updated value appears in the form.

There is also a mechanism (INotifyCollectionChanged) which raises an event when the collection is changed. The idea of 'change' in a collection is the addition or removal of an item from the collection. WPF data binding is able to detect and respond to these events.

WPF has replaced the ObjectDataSource class with an ObjectDataProvider. Without seeing the details, I'm guessing there is a lot of similarity in terms of functionality, if not the details.

In the WPF itself, the binding notation looks like the following

<TextBox Test="{Binding Path=Sun.Name, Source={StaticResource solarSystem}}" />

This notation takes the Name property of the Sun object found in the ObjectDataProvider named solarSystem. A little cumbersome, but since it's definable through Expression Blend, that's only an issue for those of you who code in Notepad 2008.

As part of the data binding mechanism, there is the concept of a data template. This greatly resembles a template within ASP.NET, where different fields and controls are displayed based on the mode of the control. One twist is that WPF data templating can be defined based on the type of object being displayed. Within the same list box, a collection of Products will appear with different fields then a collection of Customers, even though the underlying WPF is the same.

The final reveal for the demo is a list box that displayed the information about a solar system not as a list of planet names, but as a graphical representation of the solar system orbit with the images of the planets and the positioning away from the sun based on properties from the object. The cool part is that there is no change to the underlying object necessary to change from a drop down list of properties to the graphical view. Only the XAML needs to be modified. But again, that is the power of WPF.

One word of warning. Not all of the advances in WPF are necessarily available in Silverlight. A concept called a CollectionView was explicitly called out as not being part of Silverlight 2. So if you are developing for the Silverlight market, make sure that the data binding techniques you use are supported before you spend time on it.

WPF provides support for a hierarchical data template. This template because useful when you are trying to create a tree view visualization for your data. It's similar to the list box data template in concept, but the level within the hierarchy becomes part of the mechanism for distinguishing between the different data fields and styles that are used.

It looks to me like data binding for WPF has finally moved towards the standards that we have been used to. The presentation didn't cover error providers and error notification, but a slide at the end suggests that it is, using the IDataErrorInfo interface.

Mix08 - Keynote Day 2

Just got back from the Steve Ballmer / Guy Kawasaki keynote at this year’s Mix. Is Guy ever not on form? He did a great job asking Steve the tough questions, making it fun, and getting a few candid answers, along with some “PR” answers as well, including Steve’s cautious response to “What about [...]

Download links related to Mix08 Keynote Announcements

Head over to Tim Sneath’s blog for a list of all download links related to the keynote this morning.

And then my battery died. But…

…one the most amazing and unexpected announcements of the whole keynote came for me in a WPF demo towards the end. In an update to WPF that should be available some time this summer, we’re going to get SHADER SUPPORT in WPF. Yes, that kind of shader. WPF team, I love you guys.

Mix08 Keynote - Silverlight &amp; WPF

First let’s get to the obvious Silverlight announcements we “knew” were coming during this keynote: - Silverlight 2.0 Beta is available! - Expression Blend 2.5 (!) March Preview is available! - formal announcement of Silverlight Mobile device support! In my presentation last weekend I was asked about Silverlight adoption stats, which I predicted we’d get during the keynote. [...]

Mix08 Keynote - Internet Explorer 8

After a brief intro by Scott Guthrie, the technical component of the keynote began with Dean Hackamovitch’s first public demo of IE8. I know that this conference is fundamentally about connected systems, and the web browser is a vitally important component. But I thought this was a profoundly boring way to begin the technical announcement part of [...]

Mix08 Keynote - parting thoughts

I’ve just stepped out from the first Mix Keynote I’ve attended as a consultant rather than a Microsoftie.  There was no real shocker in there, but it was a solid keynote and I am enthused by a couple of exciting announcements Ray Ozzie began by saying he sees Mix08 as one of several milestones on a [...]

Dean Hachamovitch Keynote - 1

Dean is responsible for IE 8. And he is talking about 8 points (because developers can count higher than 3). If you've given presentations, you'll understand that reference.

1. CSS 2.1

There are issues with CSS support in IE7. IE8 addresses these by focusing on full support for CSS 2.1 standard.

2. CSS Certification

Getting certified is the best way to ensure that all browsers will render standard CSS correctly. Microsoft has provided a large number of test cases to include in the certification process. The problem will be backwards compatibility. There are instances where pages look gook in IE7, but don't look good in Firefox. Because IE8 is more CSS compliant, it also looks bad in IE8. There is, however, an IE7 compatibility more (under control of the page developer) to force IE8 to work like IE7

3. Performance

They have improved JS script performance by a factor of approx 2.5 times. Not always as good as Firefox/Mozilla, but a great improvement over IE7. And they are still working on it.

4. HTML 5 Support

The back button doesn't work well with AJAX functionality. Sometimes 'Back' doesn't get you what you expect. Support for HTML 5 means (among other things) an interaction that is more like what the use expects

Also, HTML 5 support includes network awareness. A connection gets lost and the page responds, including the ability to modify the content of the page.

5. Developer Tools

IE8 includes built-in developer tools. Includes a script debugging window, complete with breakpoints, watches, an immediate window, etc.

Also includes the CSS debugging info similar to what is found in Visual Studio 2008. When you select a particular element in the document, you can see the styles which are applied to the element. This allows 'wrong' style values to be quickly identified with regards to their source.

6. Activities

Activities are context-sensitive bits on a web page. Select text and quickly get to a map of the address it represents. Or find the selected item on Ebay. "Quickly' invokes a right click or selecting from an Activities menu that is similar in location to the Exception Helper in Visual Studio.The context for the selection is provided through an architecture known as OpenService format. It is called the OpenService Specification and Microsoft has made it available for comment.

7. WebSlices

The Web Slice is a part of a web page that contains basically a summary (a slice) of another web page. Provides quick, pop-up summary of a separate web page. A summary of a Facebook friend can be  retrieved through either a context-sensitive click or a toolbar click. And the current page is not left.

The is a WebSlices spec that contains the details.

8. IE 8 Beta 1 is now available. Or at least, after the keynote.

Ray Ozzie Keynote - 2

The idea behind the concept of connected devices is to create software to provide a personal device mesh using the Internet as a hub. By having a central personal data store, complete with synchronization, the devices will become much more a part of 'you'. A current research team has been working on this starting with the PCs.

A second scenario is connected entertainment devices. The vision includes having DRM be transferable between your own devices. Purchase music and be able to listen to it on your computer, your Zune and your XBox without requiring additional licenses.

Office Live Workspace, opened up to a broad public beta as of yesterday, has a major role in the connectivity picture. You will be able to tag Office documents and make them available to people who are interested in what you have to offer.

You will be able to run Exchange, Sharepoint and Office Communications Server in either the typical, on-premise server or as a hosted service (called Exchange Services, Sharepoint Services, and, well, you get the idea).

He also touched on SQL Server Data Services as a developer database in the cloud. I'll have to check that out.

And  now, on to Scott Guthrie.