We've been using data binding/templates for context menus for some time quite successfully (with a bit of help from you in the beginning). Basically we have a MenuViewModel & related classes that expose Command, Label, ImageSourceLarge etc properties, and a set of styles & data templates that create ribbon Buttons, PopupButtons & Menus from them.
We have just tried applying this approach to the application menu to allow different apps to extend our "application framework" shell more easily. I had to use a different set of templates with VariantSize="Large" but everything else is the same as context menus. Everything mostly works apart from two problems:
1. The 'Add to QAT' menu item is missing from the context menu on the items in the application menu
2. The items in the application menu are no longer visible to UI automation. This is quite serious for us as we used CodedUI tests extensively, and the first thing most tests do is 'File/New' or 'File/Open'! We are setting the AutomationId in our style, but when using the MS 'Inspect Object' tool we can't see any controls below the application menu control (i.e. the individual buttons). For normal context menus using this technique, the buttons appear to Inspect OK.
I will send a sample to the support address demoing the problem.