Criar uma barra de menus no WPF?

119

Quero criar uma barra de menus idêntica à dos formulários do Windows no meu aplicativo WPF.

Como eu faria isso?

A opção de menu na caixa de ferramentas WPF controla apenas uma barra em branco.

deception1
fonte

Respostas:

227
<DockPanel>
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="_File">
            <MenuItem Header="_Open"/>
            <MenuItem Header="_Close"/>
            <MenuItem Header="_Save"/>
        </MenuItem>
    </Menu>
    <StackPanel></StackPanel>
</DockPanel>
ionden
fonte
10
Por que existem sublinhados? Por que eles estão escondidos?
C4d #
26
@ C4u: Definem as teclas de atalho (por exemplo, Alt + f para "arquivo")
BlueRaja - Danny Pflughoeft
Eu preparei um tutorial abrangente sobre menus WPF, vinculação de comandos, adição de teclas de atalho etc. em youtu.be/bdmVWGjpA_8
Zaheer
45

Sim, um menu fornece a barra, mas não fornece itens para colocar na barra. Você precisa de algo como (de um dos meus próprios projetos):

<!-- 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
fonte
39
Olá, em vez do DockPanel aninhado, você pode usar o atributo InputGestureText. Por exemplo<MenuItem Header="Step" Click="MenuItem_Click" InputGestureText="F2" />
AlanFoster
3
@AlanFoster Você deve postar sua própria resposta, incluindo essa dica. Eu quase senti falta e isso é uma pena! Você pode reutilizar a configuração a partir da resposta aceita. É o mais simples, eu diria. E melhor formatado.
21415 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
fonte
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
fonte