wpf中的对齐菜单

wpf中的对齐菜单,wpf,visual-studio,xaml,Wpf,Visual Studio,Xaml,我在窗口的左侧设置了一个垂直菜单。它的项目正好在它上面打开,这会阻止用户在项目打开时查看菜单的完整视图 我希望每个元素都在菜单的右侧打开,这样就可以看到菜单其余部分和打开的元素的整个视图。如何做到这一点?可能借助于转换或触发器 下面是一些代码: <MenuItem Header="Maths"> <MenuItem Background="LightGray" Header="Add"/> <MenuItem Background="LightGra

我在窗口的左侧设置了一个垂直菜单。它的项目正好在它上面打开,这会阻止用户在项目打开时查看菜单的完整视图

我希望每个元素都在菜单的右侧打开,这样就可以看到菜单其余部分和打开的元素的整个视图。如何做到这一点?可能借助于转换或触发器

下面是一些代码:

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

为了清楚起见,上面的菜单项“数学”位于WPF菜单中,您已将该菜单的项面板更改为垂直堆叠面板或其他类似菜单项的上方/下方。如果是这样,那么所发生的情况是,角色为TopLevelHeader的MenuItem的默认模板(具有子项且直接位于菜单中的MenuItem)使得弹出窗口位于菜单项的下方(或上方)。您可能需要重新放置这些菜单项。在hacky(丑陋的替代方案)中,使用将用于子菜单标题角色菜单项的模板(即具有子项且位于另一个菜单项中的菜单项)。e、 g



代码并不能说明什么。截图怎么样?所以我们可以看到问题…我认为这是清楚的。菜单项不会在其右侧打开,而是在其上方隐藏菜单的其余部分。我希望内容显示得恰到好处(因为它是左侧的垂直菜单)。在哪里可以找到详细解释代码工作原理的相关源代码(例如教程)?非常好。不知道你指的是什么代码。如果您指的是menuitem模板的设置方式,那么最好使用Snoop(snoopwpf.codeplex.com/)来检查可视化树,或者您可以查看ms在默认模板上的信息()。在这种情况下,如果您对“数学”菜单项进行了窥探,则会发现弹出窗口的位置设置为“底部”。
  <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>