Popular art from my DeviantArt account:
Sunday, January 13, 2008
reuxables released!Nukeation is proud to announce the full release of our Reuxables themes for WPF (and soon - Silverlight!).
We have over 48 ResourceDictionary combos available, with more on the way in late February. :)
Here is the link to the entire runtime catalog, (requires .NET 3.0 or 3.5):
Download Demo EXEOh, and the first 25 people to email me (dax at nukeation dot com) with the subject line "Reuxables" will get a 25% off coupon! 
Friday, June 15, 2007
reuxablesIf you've been one of the rare long followers of my blog you might occassionally ask yourself what happend to NukeBall, and all those other WPF apps and tools I've been talking about.
Well, we went over a lot of changes as Microsoft put WPF, Blend, and ORCAS into shape. Finally, we're ready to talk more about it.
We're bring all those things under one roof called REUXABLES (that's pronounced "reusables"). Click this link to find out more. We're going to reveal more over the next few weeks what other stuff we have in production under the reuxables line.
 
Tuesday, April 10, 2007
.NET Rocks #227 - Dax Pandhi talks WPF and ExpressionShow #227 | 4/9/2007 Dax Pandhi talks WPF and Expression
Graphics guru and WPF wonk Dax Pandhi shares his thoughts on WPF, WPF/e, Expression suite in general, and Blend in particular. You'll hear the story of how Dax came to be the "Pwop graphics guy" as well as his contributions to the WPF community.
|
Dax Pandhi is the CEO of Nukeation Studios, an award winning UX studio, he is also a very recent MVP, and one of the first people to say that WPF will rock the world! He and his company have been helping clients prepare for and adopt Windows Presentation Foundation for their applications since 2005. Dax is committed to bridging the gap between developers and designers in the new world of User Experience. He spends his time helping UX-impaired developers adopt WPF, writing about WPF, and trying to get a life.
http://www.dotnetrocks.com/default.aspx?showNum=227 | 
Wednesday, January 03, 2007
What do you wanna learn about WPF?I'm still finding that many people are still not trying WPF. Many don't know where to start. So to help people adopt WPF, Andy Eick and I are creating some cool "learning material".
Instead of assuming we know what you - "Joe Developer" or "Joe Designer" - want to know more about in WPF, we'll just ask you.
What do you want to learn about in WPF? Does databinding interest you? Or maybe custom controls? Or scalable layouts? Or the declarative XAML?
Post a comment and leave your thoughts. We will make sure we do our best to satisfy your questions in our "learning material". Really. Free training material tailored to your needs - what more could you ask for?!
Keep reading Andy's blog and mine for updates. 
Saturday, November 11, 2006
IndiMIX'06

From left to right:
Ravi Venkatesan, Chairman of Microsoft India; Tarun Gulati, MD of Microsoft India; Steve Ballmer, CEO of Microsoft Corp.; Dax Pandhi (Me), CEO of Nukeation Studios.
This week has been amazing! I don't do much public speaking but the guys at Microsoft got me to be a speaker at IndiMIX'06. The central focus of the event was Expression and Live. Designer and developer. Cricket and Bollywood.
The event (my first big event) was fantastic. It started with a keynote from Steve Ballmer. Following that the application MatchCast, a high-end cricket statistic and analysis application, was showcased by Anil Kumble. Nukeation was the UX consultant on the application.
There was more stuff after that (from 1100 to 1300) but I missed it for two reasons. First, as the winner of Microsoft Blogstar, I had to go backstage and meet Steve himself!
>> This blog has been interrupted to announce that you are reading the blog of a Blogstar. We now return to the regularly scheduled post. <<
I got my photo taken with him, but they haven't sent it to me yet. :/ And secondly, after Steve left, my team had to prepare for our session.

The Designer Session Team
This was my first real, big speaking event and I was nervous as hell at first. The main reason I was able to give a good presentation was because of three incredibly cool people - Leon Brown, Pandurang Nayak, and Deepak Gulati. Our session was 75 minutes and covered the three Expression products. We also launched www.1expression.net (more on that later) and the WebRockstars contest at http://www.webrockstars.in/
I couldn't have asked for a better team! These guys are amazing. Thanks so much, guys! We spent two days in a conference room in Microsoft Mumbai preparing for our stuff. It was a first-of-it's-kind experience for me. Of course, the traditional "pizza while debugging" was a familiar entity.
Our session went excellently. It opened up with Leon (who was our session host) and cricket player Murali Kartik (a name Leon still probably can't pronounce - man, he got a lot of torture from me about that - and lots of other stuff!), followed by a walkthrough of Expression Web by Pandurang.

Pandu explains the session to Murali Kartik
I followed that with a brief intro of Expression Graphic Designer and Expression Interactive Designer. After that Deepak and I did a Developer-Designer workflow integration demo. He made a strict "developer looking" application (aka, functional but crappy looking) in Visual Studio 2005 with "Orcas" tools. I opened the solution in ExprID and enhanced it with styles and animations. We got a really great response from the audience. Deepak and I immediately developed this chemistry which allowed us to create a funny little style of working together on-stage. And I think the people really loved it.
We ended our session with three important things: an announcement that great things will be revealed about Expression in the first week of December; the launch of www.1expression.net; and a Q&A session. My fun moment there was representing my fellow designers worldwide - the most audible form of that was during the closing when someone asked "What are the debugging capabilities of Expression Interactive?". Deepak, Leon, and Pandu gave good, real answers. I, of course, said "Designers don't debug". :)

Mandira Bedi, TV personality and the host of the live webcast
I again missed the next session (Developer) as I was asked to be interviewed on the live webcast (75k viewers - made my knees shake!) by Mandira Bedi. I was able to catch Bob Muglia's closing remarks and Q&A. After the event, Leon and I also did a short interview for CNBC.

Bob Muglia answers a question. The four guys in the background are Deepak Gulati, Janakiram MSV, Kevin D'Souza, and Rohit Kapoor.

Praveen Srivatsa, Microsoft Regional Director for Bangalore, takes software construction seriously
Over the past 5 days, I got to meet some really great people - Microsfties, MVPs, RDs, simple civilianss, business execs, Cricket stars, movie stars, and who can forget Steve Ballmer! I also got to learn so many cool things that I can't tell without violating a dozen NDAs. That's the price you pay for being close to Microsoft.
All I can say is: hang on - the ride has just begun!
PS. Leon, yes, still MEKNB. 
Tuesday, October 31, 2006
Nukeation at IndiMIX'06 - 09 Nov @ MumbaiIf you don't already know, MIX'06 is coming to India in the form of IndiMIX'06 (http://www.indimix06.com). The keynote will be given by Steve Ballmer.
I've been given the honor of being on the same stage as Steve B. I'm going to be doing a piece on .NET Framework 3.0 - essentially about Windows Presentation Foundation and the Designer / Developer work process. I'll be co-presenting the demo with some really cool people.
IndiMIX'06 will be held at the National Center for Performing Arts (NCPA), Nariman Point, Mumbai. It's a free public event and you can register for it at the official website. If you're not able to come to Mumbai, or if the event is sold out you can watch the live webcast. Register for either at the official site.
My presentation will be from 2:00pm to 3:15pm (local time, +5:30GMT).
For more info, visit http://www.indimix06.com 
Saturday, September 23, 2006
How to use Aero Glass in your WPF applicationsAero Glass Just about everyone making (or thinking of making) an application for Windows Vista wants to try out the cool new Aero User Experience. Software such as Windows Media Player, Windows Calendar, and the Windows Sidebar really show off the Aero glass look.
While overusing the glass bit is a certain possibility (and a probability), using it judiciously can seriously help spice up your app. A few things to keep in mind when using Aero Glass:
- Avoid a full glass window. This creates performance as well as usability issues.
- Use full glass windows only for non-resizable, non-maximizing windows.
- The glass portions of the window should always allow the entire window to be dragged.
- When designing the window, keep in mind what it will look like in a pre-Vista OS – i.e., without glass. Always have a non-Glass look ready to fall back on if Aero is disabled or if the app is run on an older Windows.
This exercise will require a good GPU (128MB AGP recommended).
Thanks to Adam Nathan for the original code!
The Code
Create a new code file and add the following code:
using System;
using System.IO;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Navigation;
using System.Windows.Interop;
using System.Runtime.InteropServices;
using System.Collections.Generic;
namespace AeroGlassExample
{
public class GlassHelper
{
struct MARGINS
{
public MARGINS(Thickness t)
{
Left = (int)t.Left;
Right = (int)t.Right;
Top = (int)t.Top;
Bottom = (int)t.Bottom;
}
public int Left;
public int Right;
public int Top;
public int Bottom;
}
[DllImport("dwmapi.dll", PreserveSig = false)]
static extern void DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS margins);
[DllImport("dwmapi.dll", PreserveSig = false)]
static extern bool DwmIsCompositionEnabled();
public static bool ExtendGlassFrame(Window window, Thickness margin)
{
if (!DwmIsCompositionEnabled())
return false;
IntPtr hwnd = new WindowInteropHelper(window).Handle;
if (hwnd == IntPtr.Zero)
throw new InvalidOperationException("The Window must be shown before extending glass.");
// Set the background to transparent from both the WPF and Win32 perspectives
SolidColorBrush background = new SolidColorBrush(Colors.Red);
background.Opacity = 0.5;
window.Background = Brushes.Transparent;
HwndSource.FromHwnd(hwnd).CompositionTarget.BackgroundColor = Colors.Transparent;
MARGINS margins = new MARGINS(margin);
DwmExtendFrameIntoClientArea(hwnd, ref margins);
return true;
}
}
}
In your Window.xaml file, make the DocumentRoot object's Background to NULL then just insert the following code (marked in bold) in the codebehind file:
using System;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace AeroGlassExample
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : System.Windows.Window
{
private bool neverRendered = true;
public Window1()
{
InitializeComponent();
this.SourceInitialized += new EventHandler(Window1_SourceInitialized);
}
void Window1_SourceInitialized(object sender, EventArgs e)
{
GlassHelper.ExtendGlassFrame(this, new Thickness(-1));
}
protected override void OnContentRendered(EventArgs e)
{
if (this.neverRendered)
{
// The window takes the size of its content because SizeToContent
// is set to WidthAndHeight in the markup. We then allow
// it to be set by the user, and have the content take the size
// of the window.
this.SizeToContent = SizeToContent.Manual;
FrameworkElement root = this.Content as FrameworkElement;
if (root != null)
{
root.Width = double.NaN;
root.Height = double.NaN;
}
this.neverRendered = false;
}
base.OnContentRendered(e);
}
}
}
You will get the following result:

If you replace the thickness(-1) with thickness(5,70,5,42) you get something like this:

You can download the full code below. It requires Windows Vista RC1 or later, .NET Framework 3.0 (RC1), and Microsoft Expression Interactive Designer September CTP.
AeroGlassExample.zip (14.43 KB) 
Wednesday, July 26, 2006
Adventures in Vista build 5472Vista keeps getting better! Sure, there are still many bugs and improvements to be done, but this is a very stable work, and we're doing all our WPF experiments in Vista now.
Setup still managed to erase my Windows XP from the bootloader, and had to do the same thing as with the previous CTP. But other than the experience has been very good.
There are some neat new graphics - especially the Aero cursors now on by default!
I also noticed that the performance of WPF applications is much better on this build. There is a small glitch with ExprID and Vista, tho. Unless I disabled Desktop Composition, the menus dont show or rather don't draw.
I highly recommend trying out this build! 
Wednesday, July 05, 2006
5456 Update 2 - XP goes missing after installing VistaWindows Vista build 5456 is just plain cool! I love the new animations and graphics, as well as all the little updates and the stability. But when I installed 5456 last night (the media wasn't corrupt, thankfully), it installed in about 40+ minutes (on a 2GB RAM / P4-HT 3GHz) and I was presented with a black blank screen with a little screwed up strip of garbled pixels at the bottom. Y'know, the kind you get if you yank the VGA cord out of the display card's port. Anyways, if I wait a minute or two, it loads ok - something with the display drivers, I guess.
So, everything is ok, but when I went to reboot into my old WinXP, I saw only one "Microsoft Windows" entry in the dual-boot window. And that led to Vista.
I panicked for 5 minutes, experimented for 20, and went online for help after that. All the info I needed was found here.
The problem is that good ol' boot.ini has been replaced by the new bootloader that ships with Vista. It controls which OS loads, and stays even if you rip out Vista.
Here's what you do. Load Vista, go to START | Programs | Accessories, right-click Command Prompt, and click RUN AS ADMINISTRATOR. Then punch in the following command lines, one by one. The italics lines are my comments.
BCDEDIT /create {legacy} /d "Windows XP SP2"
The /d is just the description, and can be anything you want. I suspect Vista overwrites your description regardless. You may also get some message about {legacy} already existing. Ignore that, and go with the following.
BCDEDIT /set {legacy} device boot
BCDEDIT /set {legacy} path \ntldr
BCDEDIT /displayorder {legacy} /addlast
Each command should return a "operation completed successfully".
Reboot, and you will see the Legacy Windows in the boot list. You can log on to Vista, go to Control Panel | SYSTEM | Advanced Settings | Startup and Recovery, and select the legacy item as the default loader. Or enter the following in the command line as before:
BCDEDIT /default {legacy}
It wasn't too much trouble, but the boot thingie in Vista does have its problems. 
Tuesday, July 04, 2006
5456 Update 1Power failure. Gradual, yet instantenous power loss, caused the backup power to not hold up. System rebooted. Possible corruption of ISO of 5456. 538MB left. Integrity failure will require a re-download of the ISO. 5 gigs of bandwidth down the drain. Sithspit.  Here we go again... 5456Microsoft is committed to splurging my bandwidth. ~3 hours to Vista build 5456. 
Friday, April 14, 2006
Friday, March 24, 2006
The Future of WPF / Flash vs WPFI just read Andrew Lucking's blog post about my first video on EID, and it kinda inspired me to give my perspective on Flash vs EID.
Let's recount the basic stuff:
|
Flash |
EID/WPF |
| Programming Support |
Medium (ActionScript 2.0) |
Heavy (.NET 2.0 and XAML) |
| 3D support |
Medium (Shockwave 3D or Vectorized 3D output) |
Heavy (WPF and DirectX) |
| Declarative Programming Support |
No |
Yes |
| Bitmap Effects Support |
Limited |
Extensive |
| Animation Model |
Timeline-based: timeline is the ultimate controller; timelines are NOT optional |
Trigger-based: timelines control the animation, but the timelines are controlled by triggers; timelines are also OPTIONAL |
| Cross-Platform support |
Extensive |
Limited / Currently unavailable (WPF/E details are still sketchy) |
| Drawing Tools |
Heavy |
Medium |
What's EID and WPF potential over Flash? Well, can't say much about WPF/E until I actually use it, but taking WPF as a basic example, here are my thoughts:
NOTE: For the purpose of this post, EID and WPF (or at least the features) are the same. If it is in one, its in the other.
- It all comes back to the timeline. In Flash Timeline is God. In EID, Timeline is just another aspect of an object, and there are more than one timelines and each can be ran parallel to other timelines - even of the same object!! In other words, with Flash we're looking at "time" from a normal layman's perspective; with WPF, it's like looking at "time" from Einstein's perspective.
- In Flash, you have to stop the timeline in order to have a static frame, which makes creating a multi-section Flash website quite difficult. It's not difficult per-se, but difficult when you consider the trigger-only-timelines that EID presents. That would make this much easier.
- Creating 3D content in Flash has always been terribly difficult. Shockwave does add 3D support, but its more like VRML on steroids. If you don't know about VRML, it was a 3D web standard pushed in the late 90s. It was terrible!! With inherent and DirectX support for 3D with shaders and crap is actually fantastic! That alone will land a good blow to Flash.
- There's good DOCUMENT support in WPF. This gives you a document-data presentation component that Flash just can't do! This is one of the chief reasons why the Adobe people are gung-ho on integrating PDF and SWF.
- EID comes from a "component and controls, animate it all" point-of-view, while Flash is "all animation, some component... animate components? uhh, ok, you can try...". The WRAP PANEL and other such controls can seriously kick Flash's ass.
You might say: "Whoa! Hold on. WPF/E does not have all this! It's very puny and limited!"
If you're a Flash or non-Microsoft-stuff user, I'll let you go. If you're a Microsoft-user and you said that give yourself a big kick. Without going into the intricacies of numerology, we all know that this is just version 1. All we have to do is wait 2 more versions. Let me explain:
So I've said all the nice things about WPF and put down Flash. Well, that's not the whole story. WPF is severely limited in many ways that Flash isn't. The user base being not the least of it, of course. Right now, WPF is more close to Macromedia FLEX than Flash.
Branden Hall writes in his post titled "The Flash Killer Cometh":
"the Sparkle tool is very cool – but it really isn’t for designers, it’s too technical for most designers and too ‘arty’ for most developers. Microsoft is looking for a new type of developer to use it – an “Interactive Developer”. The thing is, right now, with the exception of some very talented folks mostly in the Flash, Director and Processing communities, this type of developer is basically mythical. "
Well, I can't say I disagree with the first part. For the "mythical Interactive Developer" (I might have to adopt that as my title) comment, well, I disagree there.
Mythical Interactive Developers are not, in fact, mythical. I am one myself, and in the last 7 years have trained 4 such people (10 years and 16 people if you want to count VRML in this). We (ahem) are rare, but not nonexistent. And more shall rise. The gates of Oblivion have opened!! Uhh... sorry, wrong topic.
Anyways, let me get back to my point.
If you are not a Microsofter or are very new to the Microsoft world - the REAL Microsoft World that only devs see - you don't know the power of number 3. As I said, again ignoring numerology, that this WPF 1.0. Microsoft ALWAYS strikes gold with Version 3.
Windows 3(.1) was the most popular in the first generation. Windows 98SE was WAY better than 95 or 98. Windows ME was a fluke, so let's forget that. In the third generation we had Windows 2000 and then XP, now we have Vista which will undoubtedly hit the mark.
Visual Studio 6.0 (#3 of II generation) was way better than anything else. Visual Studio 2005 (#3 of the III generation) is already doing great things!
So step back a bit. Look from a larger perspective. Microsoft is only laying the foundation. Bill Buxton said:
"My sense is that Microsoft is in transition from an engineering-led company to...a design-led company," he said. "There are more designers at Microsoft on any single team as there were, not too long ago, in the entire company. It's a wonderful change."
There is a new revolution coming. It will come in THREE waves. Here's my prediction for it:
- First Big Wave: We shift from WinForms to a more Web+Vector like platform. We learn the ropes for the upcoming waves. The Mythical Interactive Developer is born and many Flashers flock to the Microsoft banner - mostly because working with WPF will pay a LOT more than Flash does. Microsoft silently keeps working on the final stuff.
- Second Bigger Wave: After a year or more of having WPF out there, Microsoft will have perfect grasp on what's needed, what the public wants, what the designers+developers need. A 2.0 release gives you more power. More people flock under the Microsoft flag. More users keep adopting this technology - even just as runtime. Microsoft silently keeps working on the final stuff.
- Tsunami: The work is done. Microsoft has the perfect blend ready. Flash is either killed or is kept limping behind.
Branden Hall also writes:
" This makes me wonder how long it will take for all these new tools to actually make a positive difference for end users. Unless a talented designer and interactive developer are working with a developer to create an application with these tools the results won’t be an improvement over todays applications.
Finally, for operating systems like Windows Media Center, I can see highly customized UIs fitting in nicely – but for your everyday custom application, I don’t see how Sparkle and WPF will yeild a net gain for end users."
I recommend reading the posts in this category in old-to-new order. But let explain in short:
Microsoft is right. WPF is not being primed (solely) as a Flash-killer. It will definetely be a Mac-killer tho. But my point is this: If you think WPF is only for making things pretty you are WAAAAAAAY off.
WPF is about getting the presentation layer of a software done quickly and flexibly. Things that required superior subclassing skills and knowledge can be done by an amateur now. The declarative model makes things much easier. WPF will be a boon for developers. It will solve a LOT of problems.
For record let me make it clear:
Windows Presentation Foundation or Expression Interactive Designer will not make anything extra-graphical or extra-interactive unless designer/developer goes to some lengths to actually make it so! When you DON'T skin a control, it will look just like a normal Windows control does. WPF will solve problems such as creating composite controls, creating resolution-independent applications, allowing better and economical usage of graphics hardware and vector to lower CPU usage that GDI+ does not, and more. This is not an animation package (yet).
No. WinFX/WPF/EID is the next generation of development platform. Of course, it won't take long for it become what ASP.net is for the web. But it will be like ASP.net in many ways. WPF/E will co-exist with Flash, just as ASP.net does with PHP and JSP. Of course, it goes without saying that ASP.net is better than PHP or JSP, and so will be WPF/e (eventually). 
With that, and the sun shining in my face at 7:20 in the morning, I bid thee good night.  NukeControls Preview
Here's a first look at NukeControls. This is just a small piece of the whole thing - only 3 controls.
nPanel - a special "header" control nProgress - a super cool Vista-style progressbar for .NET 2.0 with animation! nNavigator - bi-directional navigation control
All these controls have 6 or more themes, and some like the nPanel, can be customized.
Click the image above to download a ZIP (175kb) with a VB.NET 2005 project. If you don't have VB.NET 2005, you can just run the EXE in the BIN folder.
This is an alpha build only. Expect a public beta in the coming week or two. If you run this in the IDE, do note that only a handful of events and properties have been exposed for this demo. Some themes will not function as well.
Comments are appreciated. We are also looking for people to beta test the controls suite. Beta testers get a free copy of this product! Contact us at beta [at] nukeation [dot] com.  "The Human UX" update

"The Human UX" or "The Human User Experience" is an article I wrote back in mid/late-2005 for MSDN. During the release of Visual Studio 2005, the article got delayed indefinetely. In retrospect, I think this was for the better. Some of my comments will hit harder now that people are using WPF and EID. Some of the references such as the Windows Vista UX Guide have been updated as well.
A couple of weeks ago, I got an email from Brad McCabe (Content Strategist for the Visual Basic website, as well Program Manager among other things) giving me the go-ahead to update the article (it was written in August 2005 - lots of things became outdated). I got an email from Brad today confirming that the article will soon be published!
For a BIG Microsoft fan (and why not, 60% of my life depends on MS!) there couldn't be a greater honor.
The Human UX serves as an interim-design-guideline - bridging the gap between designing for Windows Forms and designing for Windows Presentation Foundation. It focuses more on theory than on actual code so everything will apply to both technologies. Essentially, this article has "usability" at its heart. I hope for it to be a prelude to an article on WPF Design Do's and Don'ts.
The article was originally thought to be a VB article, then expanded to include C# as well. But my inability to cope with too much C# made it difficult to write it that nicely. And what about the guys who do C++ and J#? So at the end I made it platform-agnostic (to borrow a term from Ted Neward's site). Whether you do .NET or Java, GDI+ or WPF, VB or C#, Dogs or Cats, Batman or Superman, Doom or Half-Li... uhh, you get the idea - this will be good reading for you. 
Sunday, March 05, 2006
Exploring Windows Presentation Foundation - Part 1: Skinning vs UsabilityIMO, in my recent experiences, a large number of people still think of a skinned app as something like Windows Media Player, WinAMP, PowerDVD, the OEM apps that come with digital cameras, Bryce or even PwopCatcher. Skinning CAN be like that, and no doubt MANY people will want that (and need it too). However, skinning can also (and in a more widely needed as well as realistic pov) mean enhancing the existing structures of your WPF application controls.
In certain situations "skinning around the control" rather than "skinning the control" also helps. And if you allow me a moment to be painstakingly irritating, with WPF's super flexible design model, skinning is too narrow a term to really describe what can be done. But back to skinning around the control, let me clarify what I mean by building upon an example I (will) present in The Human UX:
Say we have a button that triggers a purge of a nuclear reactor (if you don't know yet, this is a hypothetical situation). From a typical skinning point of view (STC - Skinnin the control) we might have an urge to paint the control red, put a biohazard or radioactive symbol on it, and add those yellow-black warning stripes around it. Now that's all nice and good, but just PAINTING the control is not really helpful aside from making an idiot go "ooooooh, what does THIS button do?".
Let's build a USABILITY ENHANCEMENT on top of this. For a seriously dangerous function trigger like this button, a good accident deterrent is needed. Let's use a reversed version of the "Your computer will restart in 15 seconds" dialog. We make the button nicely big (say 100px wide and 50px tall). When idle, it says "Purge Reactor" and has an exclamation on either side. When clicked, the text says "Confirm?" and the button starts to pulsate its color. A small 95px wide, center-aligned, progressbar appears ON the button, and instead of the exclamation icon, a countdown is shown - which is also reflected in the "emptying" progressbar. If the action is not confirmed within 15 seconds, then it is automaticaly cancelled. To be safe from accidental double-clicks, the countdown starts 3 seconds AFTER the first click.
On cancellation, the button fades back to the normal "idle" mode.
Now this is something I just dreamt up right now. With proper planning and some usability experts (<cough> Nukeation </cough>) these types of "little things" can seriously enhance the usability of any application.
What we just did here was NOT your typical skinning. We actually edited the base template of an existing button, added various timelines to respond to different events, and added sub-controls hosted on its surface. This kind of work was not possible (at least in terms of practicality and ease) unless you knew some heavy C++. We are messing with new "sub-controls" and timelines rather than just slapping on sweet graphics, so this isn't really skinning. While the official terms for this are (as far as I know) "Editing a control template". I call it Avalonizing or Avalonization, of WPFing (pronounced "wip'fing").
But enough of terminology. My main point here is that we now have an affordable, easy to implement, and flexible model for doing such things. And this power should not be wasted on just skinning an application, but rather to create superior usability enhancements to your apps.
Coming soon
Next Part: Using various contains like Grid, Canvas, and Flow to seamlessly present both controls and textual content in a single form.
Tutorial: Simple Template Editing for the Button and Progressbar. 
& |