I understand you have a tricky situation with the need to support Hex and Currency. Since we have no need for Hex, I'm just overriding the OnKeyDown and adding logic to only allow digits to be entered. Supporting Hex wouldn't be too difficult because it is very well defined format (i.e 0x followed by digits or letters A-F). The Currency is more difficult because of locale and knowing what the currency symbol is. I haven't looked into it, but seems like figuring out the currency symbol wouldn't be hard.
I had considered changing all of our number and currency controls to be MaskedEdit boxes. The downside is using MVVM and having to bind to a String or else having to create and use a Value converter in the binding.
For Hex and Currency support, you could take the same approach you did with DateTime - create a separate Date control for just date. So have a HexEditBox and CurrencyEditBox that can be optimized for those and then have your Byte, Int16, etc. controls only allow entry of digits. That keeps things simple and efficient and useful for those controls. Just a thought.
I appreciate your response.