0

カスタム コントロールを作成しましたが、そのスタイルでメニュー項目が機能しないため、BasedOn キーを使用してスタイルを適用しました

汎用 XAML コード スニペット

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication3">

    <Style x:Key="MenuItemStyle" TargetType="{x:Type MenuItem}">
        <Setter Property="Height" Value="60"/>
        <Setter Property="Background" Value="Red"/>
    </Style>

    <Style BasedOn="{StaticResource ResourceKey=MenuItemStyle}"  TargetType="{x:Type MenuItem}"/>
    <Style TargetType="{x:Type local:CustomControl1}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:CustomControl1}">
                    <Grid x:Name="MainGrid">
                        <Menu>
                            <MenuItem Header="File" />
                        </Menu>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

スタイルはMenuItemに適用されていませんが、以下のコードのようなスタイルを追加することは機能しています.Based onを使用してこれを達成する方法.

4

1 に答える 1

0

ここには2つのオプションがあります

スタイルからキーを削除します

例えば

<Style TargetType="{x:Type MenuItem}">
    <Setter Property="Height" Value="60"/>
    <Setter Property="Background" Value="Red"/>
</Style>

これにより、このスタイルがスコープ内のすべてのメニュー項目に適用されます。

注: うまくいかない場合は、Menu のリソースでスタイルを定義してみてください。


または、キーをスタイルのままにして、スタイルをメニュー項目に直接適用します

例えば

<MenuItem Header="File" Style="{StaticResource MenuItemStyle}"/>

これにより、目的のメニュー項目のみにスタイルが適用されます


このスタイルは何の役にも立たない

<Style BasedOn="{StaticResource ResourceKey=MenuItemStyle}"  TargetType="{x:Type MenuItem}"/>
于 2014-09-21T07:35:33.690 に答える