在WPF中创建一个菜单栏?

136

我想在我的WPF应用程序中创建与Windows表单中相同的菜单栏。

我该如何做呢?

WPF控件工具箱中的菜单选项只提供了一个空白条。

4个回答

250
<DockPanel>
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="_File">
            <MenuItem Header="_Open"/>
            <MenuItem Header="_Close"/>
            <MenuItem Header="_Save"/>
        </MenuItem>
    </Menu>
    <StackPanel></StackPanel>
</DockPanel>

13
为什么会有下划线?为什么它们被隐藏了? - C4d
31
@C4u:这些是设置快捷键的(例如 Alt+f 代表“文件”)。 - BlueRaja - Danny Pflughoeft
2
我已经准备了一份关于WPF菜单、命令绑定、添加快捷键等方面的全面教程,网址为https://youtu.be/bdmVWGjpA_8。 - Zaheer

49

是的,菜单可以给你一个栏,但它并没有提供任何要放在栏里的项目。你需要像下面这样使用(来自我自己的一个项目):

<!-- Menu. -->
<Menu Width="Auto" Height="20" Background="#FFA9D1F4" DockPanel.Dock="Top">
    <MenuItem Header="_Emulator">
    <MenuItem Header="Load..." Click="MenuItem_Click" />
    <MenuItem Header="Load again" Click="menuEmulLoadLast" />
    <Separator />
    <MenuItem Click="MenuItem_Click">
        <MenuItem.Header>
            <DockPanel>
                <TextBlock>Step</TextBlock>
                <TextBlock Width="10"></TextBlock>
                <TextBlock HorizontalAlignment="Right">F2</TextBlock>
            </DockPanel>
        </MenuItem.Header>
    </MenuItem>
    :

43
你好,不要使用嵌套的DockPanel,可以使用属性InputGestureText。例如 <MenuItem Header="Step" Click="MenuItem_Click" InputGestureText="F2" /> - AlanFoster
3
@AlanFoster,你应该发布自己的答案,并包括那个提示。我差点错过了,这太遗憾了!你可以重复采用已被接受的答案的设置。我认为这是最简单且格式最好的方案。 - Konrad Viltersten

10
<StackPanel VerticalAlignment="Top">
    <Menu Width="Auto" Height="20">
        <MenuItem Header="_File">
            <MenuItem x:Name="AppExit" Header="E_xit" HorizontalAlignment="Left" Width="140" Click="AppExit_Click"/>
        </MenuItem>
        <MenuItem Header="_Tools">
            <MenuItem x:Name="Options" Header="_Options" HorizontalAlignment="Left" Width="140"/>
        </MenuItem>
        <MenuItem Header="_Help">
            <MenuItem x:Name="About" Header="&amp;About" HorizontalAlignment="Left" Width="140"/>
        </MenuItem>
    </Menu>
    <Label Content="Label"/>
</StackPanel>

2
<Container>
    <Menu>
        <MenuItem Header="File">
            <MenuItem Header="New">
               <MenuItem Header="File1"/>
               <MenuItem Header="File2"/>
               <MenuItem Header="File3"/>
            </MenuItem>
            <MenuItem Header="Open"/>
            <MenuItem Header="Save"/>
        </MenuItem>
    </Menu>
</Container>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接