2011-09-09 9 views
2

XAMLには通常のメニューがあります。そして、メニュー項目をクリックしたときに表示されるポップアップの外観を完全に変更したいと思います。MenuItemからポップアップを完全にカスタマイズするにはどうしたらいいですか?

私はこのような何かを探しています:

<Menu> 
    <MenuItem Header="MyCustomMenu"> 
     <MenuItem.PopupTemplate> 
      <ControlTemplate> 
       <Image Source="SexyImage"/> 
      </ControlTemplate> 
     </MenuItem.PopupTemplate> 
    </MenuItem> 
</Menu> 
+0

ポップアップはあなたのカスタムコントロールですか?私は質問を得ることができません。または、ポップアップとしてContextMenuコントロールを意味しますか? – sll

+0

これは一例です。ポップアップとは、メニューをクリックすると文字通りポップアップするコンテキストメニューを意味します。しかし私はそれがContextMenuであることを望んでいない。私はそこに何かを置くことができるようにしたい。イメージを考えてみましょう。 – Kugel

答えて

2

MenuItemのテンプレートを上書きする必要があります。これは、ポップアップがその一部であるため、default templatesを見てテンプレートの外観を知ることです。前記ポップアップのためにMenuItemTemplatePartAttributeを有する。

+1

ポインタをありがとう。確認してみるよ。 – Kugel

1

は、アプリケーションのリソースで次のスタイルを定義します。

のMenuItemのスタイルのオーバーライドの例を:

<Style TargetType="MenuItem"> 
      <Setter Property="OverridesDefaultStyle" Value="True"/> 
      <Setter Property="Foreground" Value="Black"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="MenuItem"> 
         .... here is your custom template 

のContextMenuのスタイルをオーバーライド:

<Style TargetType="ContextMenu"> 
      <Setter Property="SnapsToDevicePixels" Value="True"/> 
      <Setter Property="OverridesDefaultStyle" Value="True"/> 
      <Setter Property="Grid.IsSharedSizeScope" Value="true"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="ContextMenu"> 
+0

これは、ContextMenuとその中のアイテムをカスタマイズするための良い方法です。コードありがとう。それは役に立ちます。しかし、これは私が何をしているのか正確には分かりません。 – Kugel

+0

@Kugel:あなたの仕事のための解決策を見つけましたか? – sll

+0

私はH.B. suggenstionが動作します。私はそれを試してみます。後で結果を投稿します。 – Kugel

関連する問題