A common feature of Windows applications for many years has been the useful little “don’t she me this again”-style check boxes that may appear in a dialog box. The Task Dialog API directly supports this feature, too, and as such my WPF Task Dialog Wrapper exposes it as well. Today, I’ll show you how to easily leverage this in a realistic scenario. For more about the wrapper itself, see my article on CodeProject.
Mar 3, 2012
Nov 7, 2011
Using the WPF Task Dialog Wrapper in an MVVM Application
There's been a mini-flurry lately surrounding my WPF Task Dialog wrapper/emulator combo I blogged and posted about on CodeProject last year. Mostly bug fixes, which I'm happy to try to tackle, and I appreciate that people seem to actually be using it (else how would they find these bugs?). It's given me a little boost of incentive to possibly do some actual new features and improvements.
Aug 16, 2011
A WPF SearchTextBox control
Something missing from WPF (and the toolkit and even the extended toolkit) is a good reusable search box control. Well, now you too can have a pretty good one (if I dare say so). The need for one is so apparent that even Microsoft singles it out as a specific control in their guidelines*, which I used extensively to design the look and behavior of this control.
Too busy to read the details? That’s fine.
(Don’t forget to change the namespaces and image paths!)
See another of my custom WPF controls here.
Updated (9/27/2011): Added Luna.NormalColor.xaml
and Classic.xaml
files for XP and classic theme support.
Mar 31, 2011
Enforcement via necessity
At work we’re about to begin a new project. Aside from the thrill of starting something new, we’re also going to try a new (for our team at least) development methodology: agile development. With the iterations and user stories and everything.
Admittedly, it’ll just be two of us including myself but it’s a start on the path to modernizing and I’m certainly down with getting more familiar with industry proven strategies. It’s good for my career and I agree with a lot of the principles. I can’t say the same for some of the others I work with, though; in fact, the further we get along with this and the more we fold others into using it, I can foresee a few being dragged kicking and screaming. Some just want to show up at 8am and leave at exactly 4pm.
We’re going to be using the latest and greatest Team Foundation, SharePoint, Visual Studio, and Expression Studio. We’re going to use .NET 4, WPF, and MVVM. In all likelihood we’ll probably also use MEF as a simple and easy dependency injection container. I’m certainly looking forward to it.
I haven’t seen it in practice yet (since we haven’t started just yet), but it seems to me that a nice bonus of using inversion of control, dependency injection, and the model view viewmodel patterns is that they almost fit in perfectly with agile. Breaking things up into tasks (based on user stories) and iterations fits great with an application built incrementally. Using interfaces and injecting dependencies means we can have a lot of “ghost” services that seem to exist but have no substance. We can then write a lot of the application parts discretely and as a team without too much stepping-on-of-toes, and just plug in the missing parts as we fulfill tasks.
Not surprisingly, one of the best ways to enforce something is to make it a necessity. By choosing these patterns it seems like it will help a lot as far as keeping us true to the agile method, mostly by reducing the friction between the development method and the design methods. It’ll be like choosing to park in the furthest spot from the office everyday to necessitate a bit of daily walking exercise.
Switching to a new development approach can be a big upset for teams, even if they’re enthusiastic about trying it (as I am). Even going into it positively, I’m still going to face a lot of “getting used to” things and learning as I go. That’s not hard in of itself but it’s an overhead cost when your real goal is to develop software since the learning curve will eat into your coding time and efficiency. Still, I think it’ll be worth it.
I’m endeavoring to write more on agile, design patterns, and the technologies as we use them.
Sep 9, 2010
Revisiting ground zero and finding life
As much as I enjoy creating and designing new things, there is something special about returning to existing code to improve and make it better. It’s a delicate process, much slower, and it also requires that you more-or-less like the product. If not, you’ll grow sick of looking at it all the time and yearn for something new. But if it is still interesting, there is something special about refining and seeing it evolve over time. What was once perhaps a rickety old house or simply a decent working-class Cold Era built house, has slowly grown into a mansion.
That’s looking on the bright side. As a builder, though, I have a tendency to walk into that house and see only the poorly designed plumbing, how the electrical outlets were not placed usefully, or that fixing the ducts would require extensive gutting of the existing ventilation.
Sep 7, 2010
Chewing hindered by copious biting
I was still a relative amateur fresh from a recent success and itching for more. Despite still being an intern they pulled no punches and dealt me a project that dwarfed the previous one. I knew immediately it was going to be far more involved, but even then I had no idea how much more so.
Aug 30, 2010
Feet first into the water
My first real day “on the job” as an intern (still in school) went something like this (names redacted to protect the guilty):
BOSS: We’ve got an older system that another intern from four years ago did. We need to update it to support new policy standard X. Have you ever done anything with web before?
ME: Sure! [Played around with personal websites since twelve years of age but nothing too complicated.]
BOSS: Okay, great. This one is in ASP with VBScript. Here’s what you need to do. … Can you handle that?
ME: Sure! [Other than knowing it existed and maybe having seen it once (from a safe distance, of course), has never touched ASP or VB or anything similar.]