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. FSL - DualRegression

    Source:http://fsl.fmrib.ox.ac.uk/fsl/fslwiki/DualRegression Research Overview A common need for anal ...

  2. LeetCode 2. Add Two Numbers swift

    // // main.swift // leetcode02 // // Created by GuoLa on 16/1/21. // Copyright © 2016年 GuoLa. All ri ...

  3. Method not found: '!!0[] System.Array.Empty()'.

    错误原因:程序里面没有可调用的方法(程序使用的是 .NET Framework 4.6,但是你自己的系统里面使用的不是 4.6版本) 解决方法:1.安装window sp1  ,下载地址是:https ...

  4. scala 学习笔记(05) OOP(中)灵活的trait

    trait -- 不仅仅只是接口! 接上回继续,scala是一个非常有想法的语言,从接口的设计上就可以发现它的与众不同.scala中与java的接口最接近的概念是trait,见下面的代码: packa ...

  5. 对atime、mtime和ctime的研究

    前期准备 在实验之前我们在讨论为何会出现两种修改时间,为此我们推测因为修改的不是文件的同一数据,或者说同一地方,那么我们就要先搞清楚文件的结构. linux文件系统是Linux系统的心脏部分,提供了层 ...

  6. Theano3.3-练习之逻辑回归

    是官网上theano的逻辑回归的练习(http://deeplearning.net/tutorial/logreg.html#logreg)的讲解. Classifying MNIST digits ...

  7. 深入理解计算机系统(2.7)---二进制浮点数,IEEE标准(重要)

    2.6我们进行了二进制整数运算的最后一役,本次LZ将和各位一起进入浮点数的世界,这里没有无符号,没有补码,但是有各种各样的惊奇.倘若你真正的进入了浮点数的世界,一定会发现它原来是这么有意思,而不是像之 ...

  8. eclipse技巧总结

       如果遇到错误或警告,先试试统一的方法:在problems view中,右键error或者warnning,选择quick fix serial ID并不常用,如果不实现它,eclipse会给出一 ...

  9. ubuntu中安装VMWare tools

    在进入VMware Workstation之后找到虚拟机然后选择安装VMWare Tools 在下载的安装包中找到linux.iso,比如我的是C:\Program Files (x86)\VMwar ...

  10. 77 swapon-激活Linux系统中交换空间

    Linux swapon命令用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存. 语法 /sbin/swapon -a [-v] /sbin/swapon [-v] ...