2

WPF でデフォルトの ContextMenu のスタイルを変更しようとすると問題が発生します。私は ContextMenu をオーバーライドしたくありません。単に ContextMenu STYLE をオーバーライドしたいだけです。すべてのサイトで、ContextMenu の各 MenuItem を作成する必要があると言われていますが、デフォルトの MenuItem を使用し、スタイルのみを変更して背景に境界線を追加したいと考えています。どうすればいいですか?

<Style TargetType="{x:Type ContextMenu}">
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="Grid.IsSharedSizeScope" Value="true" />
    <Setter Property="HasDropShadow" Value="True" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ContextMenu}">
                <Border x:Name="Border" Background="#000" BorderThickness="1">
                    <ScrollViewer x:Name="ScrollViewer">
                        <ItemsPresenter />
                    </ScrollViewer>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
4

1 に答える 1

2

次のことを確認してください。

  • リソース ディクショナリはロードされ、後でコード内でアンロードされません。(私が覚えている限り、読み込まれたリソース ディクショナリのリストは にありますApplication.Current.Resources.MergedDictionaries)
  • 宣言でターゲット ContextMenu の Style またはその他のプロパティを設定しません。
于 2013-02-04T16:46:49.000 に答える