迟到的 WPF 学习 —— 控件
这一章书中内容比较多而杂,但每个对象的内容又相对简短,所以只挑选里边有代表性的内容做记录。
1. Label 控件:一个基础的简单的 ContentControl,Labe 支持快捷键文本的设置,可以使用以下方式为 Label 设置,使用必须遵循的语法约定为 Label 设置 Target 属性
<Label Grid.Row="0" Target="{Binding ElementName=txtA}">Choose _A</Label>
<TextBox Grid.Row="1" Name="txtA"/>
<Label Grid.Row="2" Target="{Binding ElementName=txtB}">Choose _B</Label>
<TextBox Grid.Row="3" Name="txtB"/>
为了设置 Target 属性,需要使用一个指向另一个控件的绑定表达式。标签文本中的下划线指示快捷键(如果需要文本包含下划线,可以写上两个下划线解决),当按下 Alt 时两个标签上的 A 字母和 B 字母才会显示在字母下面的下划线(这一点和原 Windows 编程使用的 & 不一样)。绑定的作用似乎是当启动快捷键 Alt+A 时,第一个标签将焦点传递给链接的控件,即 txtA。
在 XAML 中不能直接使用 & 而要在恰当的地方使用 &.(别忘了点儿)
2. 按钮:WPF 提供三类继承自 ButtonBase 的按钮,分别是 Button、CheckBox 和 RadioButton。ButtonBase 添加了一个 ClickMode 属性,用来决定何时引发 Click 事件以响应鼠标动作。默认是 ClickMode.Release,意思是鼠标单击鼠标并释放鼠标键时引发 Click 事件,也可以选择第一次按下鼠标键时(ClickMode.Press)和悬停一会儿(ClickMode.Hover)就引发。
有关按钮的一些特性:
所有的按钮都支持访问键,即快捷键
Button 的 IsCancel 属性设置为 true,即表示成为窗体的取消按钮,在当前窗体的任何位置按下 Escape 都将触发该按钮
Button 的 IsDefault 属性设置为 true,表示成为默认按钮,行为取决于焦点在窗体中的位置。如焦点位于非按钮控件,默认按钮具有蓝色阴影,看起来像具有焦点的样子,按下 Enter 将触发默认按钮。如果焦点位于另一个按钮控件,则不会被传递到默认按钮
Button 还有一个只读属性 IsDefaulted,当焦点位于另一个控件并且该控件不接受 Enter 输入的时候,默认按钮的该属性返回 true。需要注意的是,当默认按钮本身获得焦点时,该属性将返回 False
CheckBox 是一个继承自 ToggleButton 的控件,其 IsChecked 属性是一个可空的值,因此不能简单认为其只包括 true 和 false。在 WPF 为其标记一个 null 值需要使用 null 标记扩展:
<CheckBox IsChecked="{x:Null}">Determinate state</CheckBox>想要将 CheckBox 的状态控制在只能 true 或 false,就设置其 IsThreeState 为 true。ToggleButton 的三种状态都将触发不同的三个事件,方便根据状态处理逻辑。
3. 工具提示:最简单的添加提示可以写在元素定义里,ToolTip=””即可,但在 WPF 里 ToolTip 也是个内容控件,如果想要复杂甚至嵌套其他元素的提示,可以设置元素的 ToolTip 属性,使其包含其他元素即可。
ToolTipService 作为扩展增强辅助类(我自己起的名)存在,它包含了一些 ToolTip 没有的属性和事件,可以提供额外的控制操作。
4. Popup 控件:和 ToolTip 类似,Popup 也只能包含单一内容,但这个单一内容可以包含 WPF 的任何元素(这意味着虽然只能包含一个东西,但你可以放一个容器,然后容器里边放其它元素)。Popup 的内容存储在 Popup.Child 而不像 ToolTip 在 Content 属性。
可以在 XAML 中定义 Popup 但由于必须要手动显示,所以定义的 Popup 控件必须要有 Name 以保证代码可以调用它
5. Expander 控件:Expander 是一个默认折叠起来的控件,Web 中经常可以看到它的身影,它包装了一块儿内容,并通过一个小箭头在显示和隐藏之间切换。ExpandDirection 可以调整折叠的方向,如果需要使其它控件和 Expander 同步,可以实现 Expanded 和 Collapsed 事件,这两个事件分别在显示和隐藏前被触发。
迟到的 WPF 学习 —— 控件的更多相关文章
- WPF DataGrid 控件的运用
WPF DataGrid 控件的运用 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-23 参考: King Cobra 博客 ...
- 示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本
原文:示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本 一.目的:封装了一些控件到自定义的控件库中,方便快速开发 二.实现功能: 基本实现常 ...
- WPF Popup 控件导致被遮挡内容不刷新的原因
WPF Popup 控件导致被遮挡内容不刷新的原因 周银辉 今天在写一个WPF控件时用到了Popup控件,很郁闷的情况是:当popup关闭时,原来被popup挡住的界面部分不刷新,非要手动刷新一下(比 ...
- 创建 WPF 工具箱控件
创建 WPF 工具箱控件 WPF (Windows Presentation Framework) 工具箱控件模板允许您创建 WPF 控件,会自动添加到 工具箱 安装扩展的安装. 本主题演示如何使用模 ...
- wpf打印控件 实现分页打印控件功能
因为 要实现打印 wpf listbox控件 数据特别多 要打印在 几张纸上 找了几天 都没有找到相关的例子 现在 解决了 在这里和大家分享一下 public void print(Fram ...
- WPF常用控件应用demo
WPF常用控件应用demo 一.Demo 1.Demo截图如下: 2.demo实现过程 总体布局:因放大缩小窗体,控件很根据空间是否足够改变布局,故用WrapPanel布局. <ScrollVi ...
- WPF 分页控件 WPF 多线程 BackgroundWorker
WPF 分页控件 WPF 多线程 BackgroundWorker 大家好,好久没有发表一篇像样的博客了,最近的开发实在头疼,很多东西无从下口,需求没完没了,更要命的是公司的开发从来不走正规流程啊, ...
- WPF Image控件中的ImageSource与Bitmap的互相转换
原文:WPF Image控件中的ImageSource与Bitmap的互相转换 1.从bitmap转换成ImageSource [DllImport("gdi32.dll", ...
- 【转】WPF - 第三方控件
WPF - 第三方控件 目前第三方控件在网上形成巨大的共享资源,其中包括收费的也有免费的,有开源的也有不开源的,合理的使用第三方控件将使项目组的工作事半功倍.比如项目中有些复杂的业务逻辑.有些绚丽的效 ...
随机推荐
- HDU 1598 find the most comfortable road (最小生成树) >>
Problem Description XX明星有许多城市,通过与一个陌生的城市高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流.每条SARS都对行驶 ...
- monkey命令详解
标准的monkey 命令 adb shell monkey [options] <eventcount> 例如: adb shell monkey -v 产生500次随机事件,作用在 ...
- Tair LDB基于Prefixkey找到如何提取一系列性能优化项目key的prefix_size
眼下项目已快截止,编码任务也基本完毕.如今主要是性能測试. 项目是依照"Tair LDB基于Prefixkey的范围查找性能优化项目提议方案"的步骤一步步完毕的,首先先介绍第一个关 ...
- 【地图API】为何您的坐标不准?如何纠偏?
原文:[地图API]为何您的坐标不准?如何纠偏? 摘要:各种坐标体系之间如何转换?到底有哪些坐标体系?什么是火星坐标?为什么我的坐标,在地图上显示会有偏移?本文详细解答以上问题.最后给出坐标拾取工具. ...
- Duanxx的STM32学习:NVIC操作
版权声明:本文博客原创文章,博客,未经同意,不得转载.
- vs2012连接sql2008(错误类型:Could not load file or assembly)
发生错误: Sql Server2008数据库中有一个数据库. 我想ORM-Entity FrameWork技术,在自己主动了一个项目,建立一个实体类! 解决的方法: 出现上面的情况.是由于缺少了这两 ...
- 【百度地图API】自定义可编辑的交通路线
原文:[百度地图API]自定义可编辑的交通路线 任务描述: 我想自己绘制一条从地铁站出口到天安门的道路,而且还需要根据我的喜好来改变这条路线. 如何实现: 鼠标左击地图,绘制路线:双击后,绘制结束:绘 ...
- C--指针数组
一个变量有一个地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,他们都有相应的地址,所谓数组的指针是指数组的其实地址,数组元素的指针是数组元素的地址. 一个数组是有连续的一块内存单元组成 ...
- 表现层及ASP.NET MVC介绍(二)
表现层及ASP.NET MVC介绍(二) 最近的更新速度越来越慢,主要是项目上比较忙,封装EasyUi也要花很多时间.不过大家请放心,本系列不会半途夭折,并且代码干货也会持续更新.本文继续介绍表现层和 ...
- centos 7安装mysql5.5
首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安 ...