WPF垂直菜单 - 显示左侧的第一个子菜单

时间:2009-05-31 03:20:09

标签: wpf menu

我目前正在尝试垂直渲染WPF菜单。我使用了以下代码:

<Menu.ItemsPanel>
    <ItemsPanelTemplate>
        <VirtualizingStackPanel Orientation="Vertical"/>
    </ItemsPanelTemplate>
</Menu.ItemsPanel>

这是好的,但我希望子菜单显示在每个根菜单项的左侧。 关于如何做的任何指示?

3 个答案:

答案 0 :(得分:2)

您应该使用样式和模板方法来创建新的MenuItem模板。有关样式和模板的详细信息,请参阅Styling and Templating

上的此MSDN文章

可以在Expression Blend中轻​​松创建或修改MenuItem的模板,请参阅 这篇MSDN文章Create or modify a template

子MenuItem位置的默认设置位于根MenuItem的右侧,但TopLevelHeader menuitem除外,它的子MenuItems是下拉列表。如果您想将TopLevelHeader MenuItem也设置在右侧,您只需要创建默认MenuItem的新模板并修改TopLevelHeader MenuItem的设置。在混合中,您只需要在模板的XAML代码部分中将“ResourceId”修改为“SubmenuHeaderTemplateKey”。

    <Trigger Property="Role" Value="TopLevelHeader">
                <Setter Property="Padding" Value="7,2,8,3"/>
                <Setter Property="Template" Value="{DynamicResource {ComponentResourceKey ResourceId=TopLevelHeaderTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}}"/>
    </Trigger>

答案 1 :(得分:0)

您应该调整 MenutItem 控件的模板。如果您没有此控件模板的任何示例,则可以使用混合功能“编辑模板 - >编辑副本...”创建一个模板。 在那里,您必须找到弹出控件并将其展示位置属性更改为您想要的任何内容。此弹出窗口是托管子项的位置。

答案 2 :(得分:-1)

<Menu>
    <Menu.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel Orientation="Vertical"/>
        </ItemsPanelTemplate>
    </Menu.ItemsPanel>
</Menu>

我希望这可能有所帮助