2012-03-30 15 views
92

Chcę utworzyć pasek menu identyczny z tym w formularzach systemu Windows w mojej aplikacji WPF.Utwórz pasek menu w WPF?

Jak to zrobić?

Opcja menu w przyborniku formantów WPF zawiera tylko pusty pasek.

Odpowiedz

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

dlaczego jest podkreślenia? Dlaczego są ukryte? – C4u

+13

@ C4u: Ustawiają klawisze skrótów (np. Alt + f dla "pliku") –

38

Tak, menu daje poprzeczkę, ale to nie daje żadnych przedmioty umieścić w barze. Trzeba coś podobnego (z jednym z moich własnych projektów):

<!-- 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> 
    : 
+33

Tu, zamiast tego zagnieżdżonego DockPanel, możesz zamiast tego użyć atrybutu InputGestureText. Na przykład '' – AlanFoster

+2

@AlanFoster Powinieneś zamieścić własną odpowiedź ** w tym ** wskazówkę. Prawie tęskniłem za tym i to wstyd! Możesz ponownie użyć konfiguracji z zaakceptowanej odpowiedzi. To najprostsze, powiedziałbym. I najlepiej sformatowany. –

6
<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> 
1
<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>