WPF内建了两种菜单 ------ Menu和ContextMenu(上下文菜单)
1.Menu
把Menu添加到它的ItemsControl基类的唯一公开的API是IsMainMenu属性。当为true(默认值)时,用户按下Alt或者F10键,菜单获得焦点,这点符合Win32菜单用户的习惯。
<Menu IsMainMenu="True">
<MenuItem Header="_File">
<MenuItem Header="_New..." />
<MenuItem Header="_Open..." />
<Separator />
<MenuItem Header="Sen_d To">
<MenuItem Header="Mail Recipient" />
<MenuItem Header="My Document" />
</MenuItem>
</MenuItem>
<MenuItem Header="_View" />
<MenuItem Header="_Edit" />
</Menu>
Menu垂直排列菜单项:
因为Menu是一种Items控件,所以可以将它的默认面板改成StackPanel。
所有的ItemsControl通过ItemsPanel属性来交换用来排列Items的面板,其他东西保持不变
<Menu IsMainMenu="True">
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</Menu.ItemsPanel>
...
</Menu>
MenuItem是带头的Items控件(继承自HeaderedItemControl),和按钮、标签控件一样,MenuItem使用下划线前缀来支持访问键(access key)
2.ContextMenu
它和Menu工作原理一样。它是一种保存MenuItem和Separator的简单容器。但不能直接把ContextMenu嵌入到一个元素树中,必须通过一个适当的属性把它加载到控件上,比如
用由FrameworElement和FrameworkContentElement定义的ContextMenu属性。当用户在控件上右击(或者按下shift + F10)时,上下文菜单就被显示出来。