全局样式和局部样式在同一控制下覆盖全局样式
本文关键字:样式 全局 控制下 覆盖 局部 | 更新日期: 2023-09-27 17:59:20
我在DefaultTheme.xaml文件中为TypeMenu项声明了这样的全局样式
<Style TargetType="{x:Type MenuItem}">
.
.
.
</Style>
将其合并到用户控制
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../DefaultTheme.xaml" />
</ResourceDictionary.MergedDictionaries>
现在在用户控件中,如果我为TargetType="{x:Type MenuItem}"
声明任何样式,它将继承从全局样式声明的样式。
例如
<Style x:Key="LocalStyle" TargetType="{x:Type MenuItem}">
.
.
.
</Style>
这也将应用全局样式。我不希望这种地方风格继承全球风格。因此,我可以通过在我的用户控制中给定<Style TargetType="{x:Type MenuItem}">..</Style>
来覆盖它。
问题是,如果我这样做,我将无法将全局样式应用于控件中的其他位置,因为我已经在本地重写了它。应该如何处理?
基于样式继承,您的叙述是相反的。由于本地样式不是从基础继承的,因此不会将基础样式应用于本地。
If I do this i will not be able to apply the global style to other places in the control because I have locally overridden this
这种情况不会发生,因为本地样式是用键声明的,它将应用于引用该键的MenuItem
。其余全部应用全局样式。