c# – 如何使WPF样式可以继承到派生类?
发布时间:2020-12-15 04:01:43 所属栏目:百科 来源:网络整理
导读:在我们的 WPF应用程序中,我们有一个全局样式,具有TargetType = {x:Type ContextMenu}).我创建了一个从ContextMenu派生的MyContextMenu,但现在默认样式不适用. 如何告诉WPF我想要MyContextMenu从ContextMenu继承默认样式?希望我可以在我自己的控制之内(通过
在我们的
WPF应用程序中,我们有一个全局样式,具有TargetType = {x:Type ContextMenu}).我创建了一个从ContextMenu派生的MyContextMenu,但现在默认样式不适用.
如何告诉WPF我想要MyContextMenu从ContextMenu继承默认样式?希望我可以在我自己的控制之内(通过静态ctor元数据覆盖或某些东西?),而不必在任何xaml中混乱. 解决方法
如果您的应用程序中定义了一个Style,如下所示:
<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)); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读