2011-10-28 13 views
0

ウィンドウの左側に垂直メニューが設定されています。そのアイテムはその上に表示され、アイテムが開いているときにメニューを完全に表示することはできません。wpfのメニューの整列

メニューの残りの部分と開いている要素の両方のビュー全体を表示できるように、各要素をメニューのすぐ右側に開きたいとします。これはどうすればできますか?トランスフォームやトリガーの助けを借りているかもしれませんか?だから明確にすることが、MenuItemの「数学」は上記WPFメニューにあり、あなたはメニューのItemsPanelは、垂直のStackPanelか何かので、「数学することに変更された

<MenuItem Header="Maths"> 
    <MenuItem Background="LightGray" Header="Add"/> 
    <MenuItem Background="LightGray" Header="Subtract"/> 
    <MenuItem Background="LightGray" Header="Multiply"/> 
    <MenuItem Background="LightGray" Header="Divide"/> 
</MenuItem> 
+3

コードは実際にはあまり語りません。スクリーンショットはどうですか?だから私たちは問題を見ることができます... –

+0

私はそれが明らかだと思います。メニューのアイテムは、その右側には表示されず、メニューの残りの部分を隠すように表示されます。私はコンテンツがちょうど正しいようにしたい(それは左側の垂直メニューなので)。 – arjacsoh

答えて

1

:ここ

はいくつかのコードです'は他の兄弟メニュー項目の上または下にあります。もしそうなら、その役割がTopLevelHeader(子項目を持ちメニューに直接入っているMenuItem)であるMenuItemのデフォルトテンプレートは、ポップアップがメニュー項目の下(または上)になるようなものです。これらのメニュー項目を再テンプレートすることをお勧めします。ハッキーでは、SubmenuHeaderロールメニュー項目(つまり、子項目を持ち、別のMenuItem内にあるMenuItem)に使用されるテンプレートを使用します。例えば

<Menu HorizontalAlignment="Left"> 
    <Menu.ItemsPanel> 
     <ItemsPanelTemplate> 
     <StackPanel /> 
     </ItemsPanelTemplate> 
    </Menu.ItemsPanel> 
    <Menu.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
     <Style.Triggers> 
      <Trigger Property="Role" Value="TopLevelHeader"> 
      <Setter Property="Template" Value="{DynamicResource {x:Static MenuItem.SubmenuHeaderTemplateKey}}" /> 
      </Trigger> 
      <Trigger Property="Role" Value="TopLevelItem"> 
      <Setter Property="Template" Value="{DynamicResource {x:Static MenuItem.SubmenuItemTemplateKey}}" /> 
      </Trigger> 
     </Style.Triggers> 
     </Style> 
    </Menu.ItemContainerStyle> 
    <MenuItem Header="Just Item" /> 
    <MenuItem Header="Maths"> 
     <MenuItem Header="Add" /> 
     <MenuItem Header="Subtract" /> 
    </MenuItem> 
    <MenuItem Header="Misc"> 
     <MenuItem Header="Other" /> 
    </MenuItem> 
    </Menu> 
+0

さて、それだけです。コードの仕組みを詳しく説明している関連ソース(チュートリアルなど)はどこにありますか?とにかくとても良い。 – arjacsoh

+0

あなたが参照しているコードが不明です。あなたがmenuitemテンプレートのようなものがどのように設定されているのかを考えているなら、あなたの最善の策は、スヌープ(snoopwpf.codeplex.com/)のようなものを使ってビジュアルツリーを調べることです。 http://msdn.microsoft.com/en-us/library/ms747082(v=vs.85).aspx)。この場合、 '数学'メニュー項目でスヌープした場合、ポップアップの配置が 'ボトム'に設定されていることがわかります。 – AndrewS

関連する問題