我目前正在尝试垂直渲染WPF菜单。我使用了以下代码:
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</Menu.ItemsPanel>
这是好的,但我希望子菜单显示在每个根菜单项的左侧。 关于如何做的任何指示?
答案 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>
我希望这可能有所帮助