Нам нужно заменить контекстное меню для элементов RibbonButton и отключить контекстное меню везде.
Нам удалось заменить контекстное меню ничем на верхнем уровне:
<ribbon:Ribbon x:Name="ribbon" ItemsSource="{Binding RibbonItems}">
<ribbon:Ribbon.ContextMenu>
<ribbon:RibbonContextMenu>
</ribbon:RibbonContextMenu>
</ribbon:Ribbon.ContextMenu>
</ribbon:Ribbon>
(Обратите внимание, что лента заполняется программно, а не явно в xaml.)
Мы заменили контекстное меню RibbonButton:
<DataTemplate DataType="{x:Type local:ControlData}">
<ribbon:RibbonButton>
<RibbonButton.Template>
<!-- snip -->
</RibbonButton.Template>
<RibbonButton.ContextMenu>
<RibbonContextMenu>
<MenuItem Header="Help" Command="{Binding HelpCommand}" />
</RibbonContextMenu>
</RibbonButton.ContextMenu>
</ribbon:RibbonButton>
Мы не выяснили, как подавить контекстное меню в области вокруг пунктов меню (розовое на рисунке ниже):
Редактировать: вот контекстное меню, которое появляется при нажатии в пустом пространстве вокруг пунктов меню:
Любые идеи будут оценены ....