1

我在 DefaultTheme.xaml 文件中为 TypeMenu Item 声明了一个全局样式

<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>我的用户控件来覆盖它。

这是一个问题,如果我这样做,我将无法将全局样式应用到控件中的其他位置,因为我已经在本地覆盖了它。这应该如何处理?

4

1 回答 1

0

基于Style Inheritance,您的叙述是相反的。由于本地样式不是从基础继承的,所以基础样式不会应用于本地。

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引用键的位置。其余所有都应用全局样式。

于 2014-04-22T05:33:48.560 回答