C# 如何使WPF样式可继承到派生类?

C# 如何使WPF样式可继承到派生类?,c#,wpf,xaml,C#,Wpf,Xaml,在我们的WPF应用程序中,我们有一个带有TargetType={x:Type ContextMenu}的全局样式。我创建了一个从ContextMenu派生的MyContextMenu,但现在默认样式不适用 如何告诉WPF我希望MyContextMenu从ContextMenu继承默认样式?希望我可以在自己的控制范围内(通过静态ctor元数据覆盖或其他方式)完成这项工作,而不必在任何xaml中乱来。如果应用程序中定义了这样的样式: <Style TargetType="{x:Type Con

在我们的WPF应用程序中,我们有一个带有
TargetType={x:Type ContextMenu}
的全局样式。我创建了一个从ContextMenu派生的MyContextMenu,但现在默认样式不适用


如何告诉WPF我希望MyContextMenu从ContextMenu继承默认样式?希望我可以在自己的控制范围内(通过静态ctor元数据覆盖或其他方式)完成这项工作,而不必在任何xaml中乱来。

如果应用程序中定义了这样的样式:

<Style TargetType="{x:Type ContextMenu}" ...

为了补充code裸体的优秀建议,我尝试在
MyContextMenu
的XAML部分指定
Style

<ContextMenu x:Class=LocalProject.MyContextMenu"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:AdelSoft_WS_FRA_Test.Composants"
             mc:Ignorable="d"
             Style="{DynamicResource {x:Type ContextMenu}}">

如果您使用样式名称。

最后一大块代码正是我要找的。谢谢裸体先生!这是其中的一个例子,我希望我能投11次赞成票。谢谢。很好的技巧,所以我们可以从显式风格中继承隐式风格。谷歌搜索就像一只疯狗<代码>设置资源参考用于救援!!谢谢。在
MyContextMenu
的XAML插入中使用
DynamicResource
和在隐式样式定义中使用
StaticResource
有什么原因吗?我在XAML插入中尝试了这两种方法,两种方法似乎都有效。
<local:MyContextMenu Style="{DynamicResource {x:Type ContextMenu}}" ...
public MyContextMenu() {
    this.SetResourceReference(StyleProperty, typeof(ContextMenu));
}
<ContextMenu x:Class=LocalProject.MyContextMenu"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:AdelSoft_WS_FRA_Test.Composants"
             mc:Ignorable="d"
             Style="{DynamicResource {x:Type ContextMenu}}">
             Style="{StaticResource ContextMenuStyleName}">