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 に答える