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. Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例

    概要 这一章,我们对HashSet进行学习.我们先对HashSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashSet.内容包括:第1部分 HashSet介绍第2部分 HashSe ...

  2. APMServ 支持.htaccess伪静态

    假如你的APMServ安装在X盘APMServ5.2.6目录的话请按以下步骤做. X:\APMServ5.2.6\Apache\conf\httpd.conf  文件找到你所在的虚拟目录修改以下这个地 ...

  3. C#加密解密大全

    1.方法一 (不可逆加密)     public string EncryptPassword(string PasswordString,string PasswordFormat )      { ...

  4. ImageMagick常用指令详解

    Imagemagick常用指令 (ImageMagick--蓝天白云) (ImageMagick官网) (其他比较有价值的IM参考) (图片自动旋转的前端实现方案) convert 转换图像格式和大小 ...

  5. flex弹性布局学习笔记

    前言 资料来源于网络,本人只是对此作了一下操作,记录于此以便以后查阅.目的在于梳理自己前端凌乱的知识点. 本文根据 Brian Franco 的一个flexbox.scss库来记录 入职新公司前对移动 ...

  6. Android闹钟开发与展示Demo

    前言: 看过了不少安卓闹钟开发的例子,都是点到为止,都不完整,这次整一个看看. 一.闹钟的设置不需要数据库,但是展示闹钟列表的时候需要,所以需要数据库: public class MySQLiteOp ...

  7. 74 partprobe-磁盘管理

    partprobe命令用于重读分区表,当出现删除文件后,出现仍然占用空间.可以partprobe在不重启的情况下重读分区. 语法 partprobe (选项) (参数) 选项 -d:不更新内核: -s ...

  8. C#高级特性_Attribute

    Attribute: 公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET ...

  9. Java--剑指offer(1)

    1.在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. a)        常规程序 ...

  10. Gson解析json数据

    1.解析单个对象 JSON字符串如下 [ { "formatDate":"2015-10-28", "date":"2015\u5 ...