but this does not really satisfy me as I'm pretty sure there is a way to do it all in xaml and I just don't know about it.

I found an other question mentioning the FocusManager.FocusedElement="{Binding ElementName=DateContent}" option, but I have no clue as to where I could put this piece of code: it cannot be added to the controlTemplate (as I suspected), and if I put it on a grid encapsulating the datePicker in the template, it is basically useless.

thanks, this is the kind of thing I was looking for. This did not work as is, but with a little tweak I was able to have it behave as wanted: the trigger looks like this in the end: <Trigger Property="IsFocused" Value="True"> (you can edit your answer for future reference)
–
DavidMar 1 '11 at 10:15

perfect, works a treat. I wonder why the TargetName="DateContent" is needed though, since setting the FocusManager.FocusedElement attached property's value directly on the templated object should not make any difference. But I tried removing it and it breaks the behaviour, so I guess it's necessary in a way I can't understand.
–
DavidMar 1 '11 at 14:16

This behavior can be used in any other places in your application where you need to specify an element that has to be focused by default (e.g. when you open a dialog and you want the first field to be focused right away).

hmm, thanks, but this is slightly overkill for my case. It is indeed better than the OnGotFocus override as it preserve the MVVM pattern, but I prefer the simpler solution explain by meleak in this case.
–
DavidMar 1 '11 at 10:10

@David - if you are not planning to extend your application and you are sure that you will not need to set default focus anywhere anymore, then, yes, the solution provided my @Meleak is definitely simpler.
–
Pavlo GlazkovMar 1 '11 at 10:15

yes, this really is for just this case and I don't need to overdo it, so I'll stick with simple. But I'll keep your suggestion in mind for future reference as it definitely has some good ideas in it
–
DavidMar 1 '11 at 10:18