Ответ 1
Если у вас есть стиль, определенный в вашем приложении, например:
<Style TargetType="{x:Type ContextMenu}" ...
Тогда это неявный стиль, а не стиль по умолчанию. Стили по умолчанию обычно расположены в той же сборке, что и элемент управления или в соответствующих сборках (например, MyAssembly.Aero.dll).
Неявные стили не применяются автоматически к производным типам, что, вероятно, является тем, что вы видите.
Вы можете определить второй стиль, например:
<Style x:Key="{x:Type ContextMenu}" TargetType="{x:Type ContextMenu}" ...
<Style TargetType="{x:Type local:MyContextMenu}" BasedOn="{StaticResource {x:Type ContextMenu}}" ...
Или вы можете использовать свойство Style вашего контроля. Вы можете сделать следующее из XAML
<local:MyContextMenu Style="{DynamicResource {x:Type ContextMenu}}" ...
или вы можете сделать это в своем MyContextMenu так:
public MyContextMenu() {
this.SetResourceReference(StyleProperty, typeof(ContextMenu));
}