Tạo một thanh menu trong WPF?


120

Tôi muốn tạo một thanh menu giống hệt thanh menu trong các biểu mẫu windows trong ứng dụng WPF của mình.

Tôi sẽ làm điều này như thế nào?

Tùy chọn menu trong hộp công cụ điều khiển WPF chỉ cung cấp một thanh trống.

Câu trả lời:


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

11
Tại sao có dấu gạch dưới? Tại sao chúng lại bị che giấu?
C4d

27
@ C4u: Những người đó đặt các phím tắt (ví dụ: Alt + f cho "tệp")
BlueRaja - Danny Pflughoeft 23/12/16

Tôi đã chuẩn bị một hướng dẫn toàn diện về Menu WPF, Command Binding thêm các phím tắt, v.v. tại youtu.be/bdmVWGjpA_8
Zaheer

45

Có, một menu cung cấp cho bạn thanh nhưng nó không cung cấp cho bạn bất kỳ mục nào để đặt trong thanh. Bạn cần một cái gì đó như (từ một trong những dự án của riêng tôi):

<!-- 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
Xin chào, thay vì DockPanel lồng nhau đó, bạn có thể sử dụng thuộc tính InputGestureText để thay thế. Ví dụ<MenuItem Header="Step" Click="MenuItem_Click" InputGestureText="F2" />
AlanFoster 22/09/13

3
@AlanFoster Bạn nên đăng câu trả lời của riêng mình bao gồm gợi ý đó. Tôi gần như bỏ lỡ nó và đó là một điều đáng tiếc! Bạn có thể sử dụng lại thiết lập từ câu trả lời được chấp nhận. Đó là cách đơn giản nhất, tôi muốn nói. Và được định dạng tốt nhất.
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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.