>Option 2 is expensive obviously, and most places I’ve worked are opposed on many grounds (cost, maintenance, red tape)
Compared to Option 3 and 4, Option 2 (Buy in a third party library) is by far the lowest possible maintenance and red tape option possible. If you license components from a quality vendor, the initial cost gets you a lot more quality, features and support than you could possibly get from any “problematic” (your own words), or half-supported freeware or by building it yourself.
I work for Xceed. Almost a year ago, when we released the initial Xceed DataGrid for WPF v1.0, I calculated 11000 person-hours were expended on designing, developing and testing that one single product. It also includes two of the controls you mention above: the DateTimePicker and MonthCalendar controls. There’s no way a freeware offering, or even most companies’ development teams can even close to the quality level, design, features and fixing issues we put into it. Not to mention about 10 months later, at v1.3, with a larger team, there’s probably about 20000 hours invested on this product. It will be hard to come close to it unless you (or the freeware competition) are totally dedicated. We started with WPF very early and our entire company focuses on just building reusable components, so we are totally dedicated.
Option 4 and Option 3 just don’t make sense. Are you saying there’s less red tape or maintenance involved with those two options? How could building your own component and have to maintain it yourself yield less maintenance than having another company do it for you for a a few hundred bucks a year? How could using half-supported freeware libraries yield lower maintenance? And red tape? Building your own contains more hidden red tape all over the place (the red tape involving design, development, testing) instead of just the red tape associated with shelling out some cash and some learning and adapting to a pre-built solution.
As for Option 1, it also has a lot of pitfalls compared to Option 2 (Buy in a third party library) because Microsoft doesn’t update the product often, leaves many important features up to you to figure out how to do, forces you to rewrite code when you update (remember DataGridView in .NET 2.0, complete 180-degree change from .NET 1.1′s DataGrid?), technical support is extremely expensive unless you go through the forums which don’t guarantee any answers… Microsoft themselves use Xceed’s grids in important projects (like Office Accounting Professional).
In WPF, when a Microsoft finally does release one, it will be maybe 1.5 years later than our initial version, have only basic features, and be unproven / with no track record. Why wait? And even when it does arrive, why bother?
Did I mention that 90% of Xceed DataGrid for WPF v1.3′s features (all the important ones, and certainly more than Microsoft will offer) are licensed for free? So even cost is not an issue. Once you register (with your name and email), you won’t have to buy updates or anything.
BTW, the next version will include more of the controls you mentioned above that are missing, in the paid version.