¿Crear una barra de menú en WPF?

120

Quiero crear una barra de menú idéntica a la de los formularios de Windows en mi aplicación WPF.

¿Cómo haría esto?

La opción de menú en la caja de herramientas de controles de WPF solo muestra una barra en blanco.

engaño1
fuente

Respuestas:

228
<DockPanel>
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="_File">
            <MenuItem Header="_Open"/>
            <MenuItem Header="_Close"/>
            <MenuItem Header="_Save"/>
        </MenuItem>
    </Menu>
    <StackPanel></StackPanel>
</DockPanel>
ionden
fuente
11
¿Por qué hay guiones bajos? ¿Por qué están ocultos?
C4d
27
@ C4u: Esos establecen las teclas de método abreviado (por ejemplo, Alt + f para "archivo")
BlueRaja - Danny Pflughoeft
He preparado un tutorial completo sobre menús de WPF, enlace de comandos, agregando teclas de acceso directo, etc.en youtu.be/bdmVWGjpA_8
Zaheer
45

Sí, un menú te da la barra pero no te da ningún elemento para poner en la barra. Necesitas algo como (de uno de mis propios proyectos):

<!-- 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>
    :
paxdiablo
fuente
39
Hola, en lugar de ese DockPanel anidado, puedes usar el atributo InputGestureText. Por ejemplo<MenuItem Header="Step" Click="MenuItem_Click" InputGestureText="F2" />
AlanFoster
3
@AlanFoster Debes publicar tu propia respuesta, incluida esa pista. ¡Casi me lo pierdo y es una pena! Puede reutilizar la configuración a partir de la respuesta aceptada. Es el más simple, diría yo. Y mejor formateado.
Konrad Viltersten
9
<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>
PhonPanom
fuente
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>
Feelbad Soussi Wolfgun DZ
fuente