如何使WPF样式可inheritance到派生类?
在我们的WPF应用程序中,我们有一个TargetType={x:Type ContextMenu}
的全局样式。 我创建了一个派生自ContextMenu的MyContextMenu,但现在默认样式不适用。
如何告诉WPF我希望MyContextMenu从ContextMenuinheritance默认样式? 希望我可以从我的控制本身(通过静态ctor元数据覆盖或其他什么?)中做到这一点,而不必在任何xaml中乱七八糟。
如果您的应用程序中定义了样式,如下所示:
那么这是一个隐式Style,而不是默认Style。 默认样式通常与控件或匹配程序集(即MyAssembly.Aero.dll)位于同一程序集中。
隐式样式不会自动应用于派生类型,这可能就是您所看到的。
您可以定义第二个样式,如下所示:
或者,您可以利用控件的Style属性。 您可以从XAML执行以下操作
或者您可以在MyContextMenu中执行此操作,如下所示:
public MyContextMenu() { this.SetResourceReference(StyleProperty, typeof(ContextMenu)); }