2016-12-21 17 views
1

メニュー項目のヘッダーコンテンツを伸ばす方法は?WPFのストレッチフィルメニュー項目ヘッダー

<Menu> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Rows="1"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <Ellipse Fill="Red" MinWidth="20" MinHeight="20" 
     VerticalAlignment="Stretch" HorizontalAlignment="Stretch" /> 
    <Ellipse Fill="Green" MinWidth="20" MinHeight="20" 
     VerticalAlignment="Stretch" HorizontalAlignment="Stretch" /> 
</Menu> 

省略記号は、

+0

いくつかのxamlがありませんか?あなたは[MenuItem.HeaderTemplate](https://msdn.microsoft.com/en-us/library/system.windows.controls.menuitem(v = vs.110).aspx)を探していますか? –

+0

@ChrisW。私はItemContainerStyle、ItemTemplate、Header、HeaderTemplateを提供しようとしました - 何も助けません。それはメニューの代わりにItemsControlを代用した後ですが、私はここでメニューの動作を探しています... –

答えて

2

メニューがMenuItem内の各Ellipseを置く...ちょうど20×20で、デフォルトMenuItemテンプレートはその内容をストレッチすることはできません:私はこのような何かを意味します。したがって、ItemContainerStyleによってそのテンプレートを上書きする必要があります。

<Menu> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Rows="1"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 

    <!-- New MenuItem template: --> 
    <ItemsControl.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="MenuItem"> 
         <Border Background="Gold" BorderBrush="Black" BorderThickness="2" Margin="1" > 
          <ContentControl Content="{TemplateBinding Header}"/> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ItemsControl.ItemContainerStyle> 

    <Ellipse Fill="Red" MinWidth="20" MinHeight="20" 
      VerticalAlignment="Stretch" HorizontalAlignment="Stretch" /> 
    <Ellipse Fill="Green" MinWidth="20" MinHeight="20" 
      VerticalAlignment="Stretch" HorizontalAlignment="Stretch" /> 
</Menu> 
関連する問題