WPF:菜单

摘要:
唯一将Menu添加到其ItemsControl基类的公共API是IsMainMenu属性。如果为真(默认值),则用户按下Alt或F10以聚焦菜单。如果项目是子元素,它们将显示为子菜单。5个事件:选中、未选中、SubmenuOpened、SubmenuClosed和单击。还有四个事件对应于这两个属性的四个状态:展开、已收集、已选择和未选择。C、 StatusBar StatusBar的行为类似于菜单。它只是水平排列项目,通常用于窗口底部显示状态信息。

原文:http://blog.csdn.net/sheila_1988/article/details/7280195

1、Menu

  • Menu 是水平放置它的项的,默认情况下把灰色栏作为背景。
  • 把Menu 添加到它的ItemsControl 基类的唯一公开的API 是IsMainMenu 属性。当为true(默认的)时,用户按下Alt 或者F10 键,菜单获得焦点。
  • MenuItem 是带头的Items 控件(继承自HeaderedItemControl),它的头实际上是主对象。如果Items 是子元素的话就会被作为 子菜单显示。MenuItem 使用下划线前缀来支持访问键(access key)。
  • Separator(分隔线)是一种简单控件。
  • Icon——允许把任意类型的对象添加到Header 旁边。Icon 对象会像Header 一样被渲染,尽管它通常是一幅小图片。
  • IsCheckable——让MenuItem 的行为像一个CheckBox 控件。
  • InputGestureText——用一个相关的手势(gesture)来标识一个项(最常见的就是键盘快捷方式,比如Ctrl+O)。
  • 5个事件:Checked、Unchecked、SubmenuOpened、SubmenuClosed 和Click。
  • 要为MenuItem 设置一个键盘快捷键,你应该用它的Command 属性。

2、ContextMenu(上下文菜单)

  • 是一种保存MenuItem 和Separator 的简单容器。但不能直接把ContextMenu 嵌入到一个元素树中,必须通过一个适当的属性把它加载到控件上。
  • IsOpen 属性以及Opened/Closed 事件。
  • 默认情况下,菜单左上角位于鼠标指针处,但是可以把它的Placement 改成一个非MousePoint 的值(如Absolute),或者设置它的HorizontalOffset 以及VerticalOffset 属性,来调整这个行为。
  • ContextMenuService 静态类,它包含了许多附加属性,分别对应那些由ContextMenu 直接定义的属性。
 
3、其他Items 控件
A、TreeView
  • 用可展开和折叠的节点来分层显示数据。
  • 在TreeView 中一定要显式地用TreeViewItem 包装Item,用TreeViewItem来填充,TreeViewItem 就像MenuItem 一样,是一种带有头的控件,它的Header 属性包含着当前的项,而它的Items 集合中保存着子项(子项也是TreeViewItem)。
  • TreeViewItem 有两个方便的属性IsExpanded 和IsSelected。还有4 个事件,分别对应于这两个属性的4种状态:Expanded、Collapsed、Selected 和Unselected。
  • 同样支持富键盘导航,加号和减号键可以展开或折叠一个项,箭头方向键、Page Up、Page Down、Home 和End 键可以从一个项向另一个项移动焦点。
B、ToolBar
  • 对许多小的按钮(或者其他控件)进行分组。
  • ToolBar 可以被放在元素树的任何地方,但是通常把它们放在一个叫作ToolBarTray 的FrameworkElement 中。
  • 用户就可以拖曳ToolBar 或重新定义ToolBar,。除非ToolBarTray的IsLocked 属性被设置为true。
  • ToolBarTray 有一个Orientation 属性,可以把它设置为Vertical 使其所有的ToolBar 垂直排列项。
  • 默认都是最后一个元素第一个被移到溢出区域,但是你能通过OverflowMode 附加属性来控制每个项的溢出行为。有了这个属性,你就可以把一个项标记为AsNeeded(默认,按需要溢出)、Always 或Never。
  • System.Windows.Input 命名空间中的KeyboardNavigat ion 类定义了一些用来自定义键盘行为的附加属性。
  • ToolBar 实际上是一个带有头的Item 控件(就像MenuItem 和TreeViewItem)。它的Header 属性从来不会被显示,但是它可以被用来实现ToolBarTray 的其他特性。
C、StatusBar
  • StatusBar 的行为就像Menu,它只是水平排列放它的项,通常用在窗口底部,以显示状态信息。
  • StatusBar 为Separator 提供了一个控件模板,Separator 是作为垂直线被渲染的。
  • StatusBar 中的项(除了Separator)是被隐式地包装在一个StatusBarItem 中,但是你依然能显式地进行包装。
 

免责声明:文章转载自《WPF:菜单》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【转】内存池设计与实现NVIDIA FFmpeg 转码技术分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

c# wpf 条状刻度线,仪表盘的做法

网上看到 https://www.cnblogs.com/congqiandehoulai/p/12733245.html  照着例子做,一直不行,最后发现了问题。 1 需要添加两个引用 Microsoft.Expression.ControlsMicrosoft.Expression.Drawing 这两个dll需要引用到项目里,可以在自己的电脑里查到...

周末充电之WPF(四).多窗口之间操作

多窗口实例: 1.在多个窗口的情况下如何自定义指定要启动的窗口程序 1 <Application x:Class="toolbar.App" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x...

WPF之Binding

Bingding是什么 WPF中的Binding注重表达的是一种像桥梁一样的关系,它的两端分别是Binding的源(Source)和目标(Target)。数据从哪里来哪里就是源,Binding是架在中间的桥梁,Binding的目标是数据要往哪去儿。一般情况下,Binding源是逻辑层的对象,Binging的目标是UI层的控件对象。 Binding如何传递数...

手把手教你 用 wpf 制作metro ProgressRing (Windows8 等待动画)

效果图: 还在羡慕metro的ProgressRing吗? wpf 也可以拥有 首先说下思路, 一共6个点围绕一直圆转,所以需要使用rotation动画 并且一直转下去。 那么下面的问题就好解决了。 首先是xaml 部分 我们需要实现旋转动画: 所以要用到这个: [html]view plaincopyprint? <DoubleAnima...

【WPF学习】第五十二章 动画性能

  通常,为用户界面应用动画只不过是创建并配置正确的动画和故事板对象。但在其他情况下,特别是同时发生多个动画时,可能需要更加关注性能。特定的效果更可能导致这些问题——例如,那些涉及视频、大位图以及多层透明等的效果通常需要占用更多CPU开销。如果不谨慎实现这类效果,运行它们使可能造成明显抖动,或者会从其他同时运行的应用程序抢占CPU时间。   幸运的是,WP...

wpf学习笔记更新数据源

此示例基于wpf学习笔记-指定数据源1.让对象实现INotifyPropertyChanged接口,以便属性更改发出通知 {publicPerson(){}publicPerson(stringname,intage){this.name=name;this.age=age;}stringname;publicstringName{get{returnth...