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.

Antworten:


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

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>
    :

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>

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>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.