สร้างแถบเมนูใน WPF หรือไม่


120

ฉันต้องการสร้างแถบเมนูที่เหมือนกับในรูปแบบ windows ในแอปพลิเคชัน WPF ของฉัน

ฉันจะทำอย่างไร

ตัวเลือกเมนูในกล่องเครื่องมือการควบคุม WPF จะให้เฉพาะแถบว่างเท่านั้น

คำตอบ:


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

11
ทำไมต้องมีเครื่องหมายขีดล่าง? ทำไมพวกเขาถึงถูกซ่อนไว้?
C4d

27
@ C4u: ผู้ตั้งค่าปุ่มลัด (เช่น Alt + f สำหรับ "file")
BlueRaja - Danny Pflughoeft

ฉันได้เตรียมบทช่วยสอนที่ครอบคลุมเกี่ยวกับเมนู WPF การผูกคำสั่งการเพิ่มปุ่มทางลัดและอื่น ๆ ที่youtu.be/bdmVWGjpA_8
Zaheer

45

ใช่เมนูจะให้แถบ แต่ไม่ได้ให้รายการใด ๆในแถบ คุณต้องการบางสิ่งเช่น (จากโครงการของฉันเอง):

<!-- 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
สวัสดีแทนที่จะเป็น DockPanel ที่ซ้อนกันคุณสามารถใช้แอตทริบิวต์ InputGestureText แทนได้ ตัวอย่างเช่น<MenuItem Header="Step" Click="MenuItem_Click" InputGestureText="F2" />
AlanFoster

3
@AlanFoster คุณควรโพสต์คำตอบของคุณเองรวมถึงคำใบ้นั้นด้วย ฉันเกือบพลาดแล้วและนั่นก็น่าเสียดาย! คุณสามารถใช้การตั้งค่าซ้ำได้จากคำตอบที่ยอมรับ มันง่ายที่สุดฉันจะบอกว่า และจัดรูปแบบได้ดีที่สุด
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>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.