I’d also missed that there’s a way to get the guidance in “bite-sized” chunks via an RSS feed for Outlook1.

Why is this relevant? Well, the p&p team’s guidance is a baseline for .net development – being at least aware of the best practice is certain to improve your own development. Time to do some configuration…

Thursday, January 22, 2009

One of the unsung heroes of HTML is the ability to use internal links within a document for navigation within a page.

In HTML, this is achieved by placing name tags (e.g. <A Name=”top>…</A>) as invisible placeholders throughout the document, and then referencing them from internal hyperlinks (e.g. <A HREF=”#target”>Back to top</a>) wherever you want the navigation to appear.

In Silverlight, it’s common to use a ScrollViewer control to provide a scrolling viewport over some other set of controls, but there’s no analogue to the internal hyperlink to allow us to easily scroll that viewport. It’s easy enough to use HyperlinkButton controls to provide the navigation, but how to scroll the ScrollViewer?

My solution is a simple one – provide an extension method that commands a ScrollViewer to position itself so that a specific control is visible. The click event handler for the HyperlinkButton can then easily simulate internal links and position the ScrollViewer.

In the following Xaml source snippet I’ve used HeaderedItemsControls to contain my sections:

Thursday, January 08, 2009

I’ve been quietly following Mike Taulty’s posts on his experiments with the Live Framework SDK, and with creating a simplistic photo sharing application that supports online/offline working via Live Mesh.

Now he’s got to the point of starting to implement Mesh Object sharing, I’ve started to get really interested. This is the functionality that will raise an application way above its competitors.

Sure there will be plenty of issues regarding information governance (does a user have the legal right to share whatever they want), but for the kind of application I’ve got in mind those security issues can be baked into the application at the root level – for example by encrypting the data stored, by having a central mesh object that stores “access keys” to the data or some such – nothing that can’t be solved.

What this gives is a simple way for a user to work disconnected, to upload to a central store, and to share that work with their colleagues, who can also work disconnected.

This is hard to get your head around to start with but is seriously good stuff.