Eine Menüleiste in WPF erstellen?

119

Ich möchte eine Menüleiste erstellen, die mit der in Windows Forms in meiner WPF-Anwendung identisch ist.

Wie würde ich das machen?

Die Menüoption in der Toolbox für WPF-Steuerelemente enthält nur eine leere Leiste.

Täuschung1
quelle

Antworten:

227
<DockPanel>
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="_File">
            <MenuItem Header="_Open"/>
            <MenuItem Header="_Close"/>
            <MenuItem Header="_Save"/>
        </MenuItem>
    </Menu>
    <StackPanel></StackPanel>
</DockPanel>
ionden
quelle
10
Warum gibt es Unterstriche? Warum sind sie versteckt?
C4d
26
@ C4u: Diese setzen die Tastenkombinationen (zB Alt + f für "Datei")
BlueRaja - Danny Pflughoeft
Ich habe ein umfassendes Tutorial zu WPF-Menüs, Befehlsbindung, Hinzufügen von Tastenkombinationen
Zaheer
45

Ja, ein Menü gibt Ihnen die Leiste, aber es gibt Ihnen keine Elemente , die Sie in die Leiste legen können. Du brauchst so etwas wie (aus einem meiner eigenen Projekte):

<!-- 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
quelle
39
Hallo, anstelle dieses verschachtelten DockPanels können Sie stattdessen das Attribut InputGestureText verwenden. Zum Beispiel<MenuItem Header="Step" Click="MenuItem_Click" InputGestureText="F2" />
AlanFoster
3
@AlanFoster Du solltest deine eigene Antwort mit diesem Hinweis posten . Ich habe es fast verpasst und das ist eine Schande! Sie können das Setup aus der akzeptierten Antwort wiederverwenden. Es ist das einfachste, würde ich sagen. Und am besten formatiert.
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
quelle
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
quelle