I tested the case further and I found a solution to your scenario. First of all, as I explained, RadContextMenu does not respect top level items and practically TopLevel templates do not exist in RadContextMenu. And this is the intended behavior by default.
So to force each RadMenuItem to have the correct template, you have to explicitly set the template for each item. I have included a sample here, demonstrating the visual appearance you wish to accomplish. Some of the templates are applied through the Template property of the RadMenuItem, while others use the SubMenuHeaderTemplateKey property. The method is a bit hacky and is surely logically incorrect, but is working fine with your scenario.
What you could do is have an ItemContainerStyleSelector for your RadContextMenu that determines what is the level of the RadMenuItem and pass a different Style for the uppermost level items and lower level items. In the Style for the upper level items you can set the Template property, and for the lower level items you can set the SubMenuHeaderTemplateKey (submenu header items) or again simply the Template property (ordinary submenu items).
The sample contains a few comments starting with the word NOTE. You can check them to see the modified spots.
I hope this will help you achieve the context menu look you wish to have. If you need further guidance on this issue, please let me know.
the Telerik team
Thank you for being the most amazing .NET community! Your unfailing support is what helps us charge forward! We'd appreciate your vote for Telerik in this year's DevProConnections Awards. We are competing in mind-blowing 20 categories and every vote counts! VOTE for Telerik NOW >>