WPF 内建了两种菜单——Menu 和ContextMenu(上下文菜单)。

  1. Menu

  Menu 的项可以是任何东西,但是你应该使用MenuItem 以及Separator 对象。

  

 <Menu x:Name="menu" Height="23.333" VerticalAlignment="Top">
<MenuItem Header="配置">
<MenuItem Header="_New..." IsCheckable="True"/>
<MenuItem Header="_Open..." InputGestureText="ctrl+o" />
<Separator />
<MenuItem Header="Sen_d To">
<MenuItem Header="Mail Recipient" />
<MenuItem Header="My Documents" />
</MenuItem>
</MenuItem>
<MenuItem Header="_Edit">
</MenuItem>
<MenuItem Header="_View">
</MenuItem>
</Menu>

  

  MenuItem 是带头的Items 控件(继承自HeaderedItemControl),这个和带头的内容控件非常像。对于MenuItem,它的头实际上是主对象(通常是文字,如图4-18 所示)。如果Items 是子元素的话就会被作为子菜单显示。和按钮、标签控件一样,MenuItem 使用下划线前缀来支持访问键(access key)。

  Separator(分隔线)是一种简单控件,当被放在MenuItem 里时,它会被 那样以水平线渲染。

  Icon——允许把任意类型的对象添加到Header 旁边。Icon 对象会像Header 一样被渲染,尽管它通常是一幅小图片。

  IsCheckable——让MenuItem 的行为像一个CheckBox 控件。

  InputGestureText——用一个相关的手势(gesture)来标识一个项(最常见的就是键盘快捷方式,比如Ctrl+O)。

  2.ContextMenu

  它是一种保存MenuItem 和Separator 的简单容器。但不能直接把ContextMenu 嵌入到一个元素树中,必须通过一个适当的属性把它加载到控件上,比如使用由

  FrameworkElement 和FrameworkContentElement 定义的ContextMenu 属性。当用户在控件上右击(或者按下Shift+F10)时,上下文菜单就被显示出来。

<ListBox>
        <ListBox.ContextMenu>
            <ContextMenu>
                <MenuItem Header="_File">
                    <MenuItem Header="_New..." />
                    <MenuItem Header="_Open..." />
                    <Separator />
                    <MenuItem Header="Sen_d To">
                        <MenuItem Header="Mail Recipient" />
                        <MenuItem Header="My Documents" />
                    </MenuItem>
                </MenuItem>
            </ContextMenu>
        </ListBox.ContextMenu>
    </ListBox>

  

  3. TreeView

  TreeView 是一种常用控件,它会用可展开和折叠的节点来分层显示数据。

  TreeView 和Menu 一样,也是一种简单控件。它可以包含任何项,并把这些项垂直排列。但是如果不用TreeViewItem 来填充它的话,TreeView 就没意义

<TreeView>
        <TreeViewItem Header="Desktop">
            <TreeViewItem Header="Computer">
            </TreeViewItem>
            <TreeViewItem Header="Recycle Bin">
            </TreeViewItem>
            <TreeViewItem Header="Control Panel">
                <TreeViewItem Header="Programs" />
                <TreeViewItem Header="Security" />
            </TreeViewItem>
            <TreeViewItem Header="Network">
            </TreeViewItem>
        </TreeViewItem>
    </TreeView>

  

  TreeViewItem 有两个方便的属性IsExpanded 和IsSelected,还有4 个事件,分别对应于这两个属性的4种状态:Expanded、Collapsed、Selected 和Unselected。TreeViewItem 同样支持富键盘导航,加号和减号键可以展开或折叠一个项,箭头方向键、Page Up、Page Down、Home 和End 键可以从一个项向另一个项移动焦点。

  4. ToolBar

  Separator 也被渲染为垂直线而不是水平线。由于ToolBar 重载了项的默认样式,所以当它们被放在一个ToolBar 中时会自动变成大部分人所期望看到的样子。

<ToolBar>
            <Button>1</Button>
            <Separator />
            <ToggleButton>2</ToggleButton>
            <Separator />
        </ToolBar>

  5. StatusBar

  StatusBar 的行为就像Menu,它只是水平排列放它的项

  StatusBar 为Separator 提供了一个控件模板,Separator 是作为垂直线被渲染的,就像它显示在ToolBar 中一样。StatusBar 中的项(除了Separator)是被隐式地包装在一个StatusBarItem 中,但是你依然能显式地进行包装。

<StatusBar>
            <Label>27 Items</Label>
            <Separator />
            <Label>Zoom</Label>
            <ComboBox>
                <ComboBoxItem>100%</ComboBoxItem>
                <ComboBoxItem>85%</ComboBoxItem>
            </ComboBox>
        </StatusBar>

  

wpf配置菜单栏的更多相关文章

  1. WPF的菜单栏,工具栏的简单使用

    1. 界面效果如下: 2. 页面 .xaml代码如下: <Window x:Class="MenuAndToolBar.MainWindow" xmlns="htt ...

  2. Wpf配置文件属性

    public MainWindow() { InitializeComponent(); this.WindowState = Properties.Settings.Default.WindowSt ...

  3. Opencv 2.4.10 +VS2010 项目配置记录

    http://blog.csdn.net/scottly1/article/details/40978625?utm_source=tuicool 因为工作需要,小小的研究一下Opencv的图像处理, ...

  4. xubuntu12.04配置

    更改源:我用上海交通大学的 首先备份Ubuntu12.04源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup   #(备份下当前 ...

  5. opencv配置(转)

    1. 下载安装Opencv,去官网http://opencv.org/即可下载最新版本的Opencv,此处用的是Opencv 2.4.10 安装时傻瓜式的,最新版本的安装就是相当于解压到你指定的安装目 ...

  6. Mac系统中idea配置git总结

    系统配置git相关文章,网上有很多,这里只总结我所遇到的问题 配置git相关信息命令: vim ~/.gitconfig 然后就可以配置相关信息,git配置文件详解请参考以下网址: https://b ...

  7. 下载、配置全新的eclipse

    1.https://www.eclipse.org/downloads/ 2.确保安装配置了JDK,打开eclipse-inst-win64.exe,让eclipse installer程序UPDAT ...

  8. BookStore示例项目---菜单栏UI分析

    部署 参照 ABP示例项目BookStore搭建部署 项目解构 1).动态脚本代理 启动项目时,默认会调用两个接口 /Abp/ApplicationConfigurationScript /Abp/S ...

  9. 漫谈可视化Prefuse(五)---一款属于我自己的可视化工具

    伴随着前期的基础积累,翻过API,读过一些Demo,总觉得自己已经摸透了Prefuse,小打小闹似乎已经无法满足内心膨胀的自己.还记得儿时看的<武状元苏乞儿>中降龙十八掌最后一张居然是空白 ...

随机推荐

  1. Mysql LIMIT如何正确对其进行优化

    Mysql LIMIT如何正确对其进行优化 2010-05-17 17:09 佚名 博客园 字号:T | T 我们今天主要和大家分享的是Mysql LIMIT简单介绍以及如何进行优化的相关内容的描述, ...

  2. Linux shell文本过滤

    正则表达式 --概念:一种用来描述文本模式的特殊语法 --由普通字符(例如:字符a到z),以及特殊字符(元字符,如/*?等)组成匹配的字符串 --文本过滤工具在某种模式之下,都支持正则表达式 --基本 ...

  3. 小图标外链API

    网页上有些分享的小图标,比如分享到facebook,weibo,qq空间等功能的时候,图标以前一般是自己做一个css sprite.当一个网站的图标变了的时候,比如facebook变成assbook的 ...

  4. Putty颜色设置

    默认的Putty颜色和字体太不好看了,得自己设置: 字体:毫无疑问Consolas, 10-point:看起来非常清新自然 颜色: * Default Foreground: 255/255/255  ...

  5. 谱多流形聚类SMMC

    今天是2015年的最后一天,决定尽量乘着这三天休息把毕设主题的博客给更完,今天写smmc的算法,接下来三天会对前面的三个算法kmeans.SC以及smmc应用在今年的研究生建模提供的数据中进行matl ...

  6. Struts2 默认Action和模块包含

    在我们定义Action的时候会希望有一个默认的action在写错action时或者不写action时不至于报错 这里我只写一个简单的strut.xml例子 <?xml version=" ...

  7. STM32-外部中断,没有硬件干扰就是快乐

    一:触发方式 STM32 的外部中断是通过边沿来触发的,不支持电平触发: 二:外部中断分组 STM32 的每一个GPIO都能配置成一个外部中断触发源,STM32 通过根据引脚的序号不同将众多中断触发源 ...

  8. Javascript DOM操作实例

          最近在学DOM,但是还是没有办法很好的记住API,想找些例子来练习,网上的例子将一个个DOM对象方法挨个举例,并没有集合在一起用,效果不尽人意.所以自己写一份实例,顺便巩固下学到的知识. ...

  9. Sql视图创建语句

    create view [dbo].[AllUsers] as select u.UserId, u.Firstname, u.Lastname, u.ts, am.Email, au.UserNam ...

  10. Android之Activity启动模式

    正常模式 每个应用都有一个任务栈,任务栈中保存着已创建的Activity,先创建的Activity先入栈,栈顶是当前正在显示的activity(running),这是正常模式下的Activity的管理 ...