Archive for the 'WPF' Category
Are desktop developers ignoring WPF at their peril?
So is 2010 the year when WPF finally starts to make the big-time? Having spent some time now working with the new desktop framework, I find it unlikely that I will find a compelling enough reason to choose Windows Forms for a desktop UI technology choice again.
So what’s holding it (WPF) back? I have read and listened to a lot of stuff online suggesting it’s so complex that it’s turning people off the idea. So what about the issue of so called complexity? Of all the ‘W’ technology stacks to come out from Microsoft, I count WCF as the most complex and there certainly hasn’t been any overwhelming discussion about how that complexity has raised the barrier of entry, to the point where it’s slowed adoption. There seems to be an consistent message coming from the scribes, with constant reference to a new division of labour, shared by the trusty old developer and the so called ‘turtle necks’ (designers), a term that seems to be sticking and one I’m sure designers find amusing a pejorative one. And lets not forget the newest addition to the vernacular, the ‘Devigner’! There seems to be a lot of opinion and chatter that holds the opinion that UI design is no longer within our grasp as developers, unless we have enough right brain activity going on that we might be precluded from committing outrageous sins of the desktop.
So here’s my take – I have written a few UI’s now in XAML based technology (SL and WPF) and I do not count myself as a designer or devigner. Perhaps I have some artistic flair (yeah I’m an arty type) in a general sense, but when it comes to graphics, I am pure stick figures all the way. I have been known to classify myself in the past as the patron saint of the graphically challenged! And yet I have now developed a couple of XAML User Interfaces where the User’s and my peers considered them to be ‘attractive’, self describing, efficient, simple to use, etc. Oh, and I still managed to do this all with my trusty old supervising controller in tow.
So why didn’t I cower in corner somewhere at the prospect of building a XAML UI? Well it’s not in my nature for starters, but secondly I wasn’t prepared to believe the hype. Sure I did quite a bit of prototyping and experimentation but in the wash up, learning is doing and each time I do it I get better at it – sound familiar? By the way, I don’t think I was doing anything graphically amazing per`se, but some nice simple animations will go a long way even from the king of the stick men.
Here is what I advise: don’t be afraid of the technology. If you ever developed desktop applications in the past and considered yourself capable in designing a good user experience, then don’t buy into the scare mongering and be prepared to jump off the cliff.
I don’t doubt that there will be some small percentage of software teams that will bring on a dedicated designer(s) but I would hate to think that the small development teams out there will be put off venturing out into the brave new world. Yes there is a lot of complexity (particularly in WPF) and the learning curve is certainly not shallow by any means, but nothing good in life is easy.
6 commentsSketchFlow and Agile Modelling. A good marriage?
Recently our team has been engaged in developing a highly scalable batch processing system, which to be fair didn’t require much beyond a fairly simple User Interface with few screens. Given our choice of WPF as the technology to build the presentation layer, we decided to extend our curiosity in SketchFlow and put it to the test in a real live project.
So, off we set and created our prototype and when completed, sent it on to the stakeholders to cast their critical
eye upon it and provide feedback using the SketchFlow players tools for capturing feedback. I must admit that I wasn’t convinced that our users / stakeholders where going to be particularly enamoured by the experience but I am happy to say that I was wrong- so incredibly wrong. Whilst developing the prototype I found myself continually applying my own biases toward the tool and they were such that I was developing an opinion that SketchFlow’s feedback mechanism was a little too simple and perhaps even ‘clunky’ to provide them with an experience that they would consider productive or enjoyable. However, the feedback came through very swiftly and along with it an enormous endorsement of the process, tool and the whole experience.
These user / stakeholders are used to defining and or changing a proposed UI layout in well known visual design applications (unnamed) and feeding those design documents accompanied with text documents (for annotation) to the software team for consideration. These documents would bounce between parties until a finalised design had been settled upon.
This time, upon having been supplied feedback via SketchFlow, they are reporting a significant amount of saving in time dedicated to the process and they are attributing that time saving entirely to the ease of use and functionality of SketchFlow. Now it’s early days yet and I don’t want to get carried away until we get a few more iterations into the process, however I am feeling pretty excited when our users come back with such positive feedback in their experience of the whole development life cycle.
And there I was, ready to put the kybosh on the idea. I cant argue a case when the business stakeholders show you nothing but thumbs pointing in an upward direction.
No commentsA WPF - IronRuby Scripting Console User Control
One of the clear value added possibilities with IronRuby and IronPython (or any DLR language) has to offer is making applications scriptable. This opens the possibility for enabling scripting of your application, it’s types and potentially objects running in memory in your application at runtime. I recently went looking for an IronRuby console / shell window control written natively in WPF and turned up nothing. I did however come across some examples implemented for Windows Forms and the one that got my attention was Orion Edwards Embedded IronRuby Interactive Console.
Whilst Orion’s project provided the basis of what I was after, I was under no illusion that I would find exactly what I was after and would therefore have to build out the rest of the functionality I required.
The Basic Requirements List
- Reusable WPF User Control
- The Console should allow users to write script against in memory objects of the host application.
- Should persist (to a log) the state of variables in the IronRuby runtime scopes.
- Extensible Application Design and easily maintained and Testable.
So rather than re-invent the wheel I started out with Orion’s code and worked it into a WPF User Control that followed the MVP pattern. This version supports printing of all scope variable state to the console window, clearing of the console window text and all the out of the box access to the IronRuby runtime from the console itself. The IronRuby Console User control also allows the consumer application to pass through in memory variables from your managed CLR hosting application.
Finally I need to also make mention that some of the classes used to stream the STD/IO came directly from Ben Halls wonderful IronEditor. And before I forget, the code can found here on my blogs subversion repository.
3 comments







