迟到的 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 - 第三方控件 目前第三方控件在网上形成巨大的共享资源,其中包括收费的也有免费的,有开源的也有不开源的,合理的使用第三方控件将使项目组的工作事半功倍.比如项目中有些复杂的业务逻辑.有些绚丽的效 ...
随机推荐
- 使用CNN(convolutional neural nets)关键的一点是检测到的面部教程(四):学习率,学习潜能,dropout
第七部分 让 学习率 和 学习潜能 随时间的变化 光训练就花了一个小时的时间.等结果并非一个令人心情愉快的事情.这一部分.我们将讨论将两个技巧结合让网络训练的更快! 直觉上的解决的方法是,開始训练时取 ...
- 如何为ios酷我音乐盒下载导出的音乐文件(使用Java程序设计)
这个工具已经准备第二版,读者了解编程软件,可以直接使用,请阅读和使用这个场地 http://blog.csdn.net/jzj1993/article/details/44459983 本文所涉及内容 ...
- Bag标签之中的一个行代码实行中文分词实例1
例1: 分词(返回以逗号隔开的词组,gap=",") <bagid=pPage act=2words name=words gap=",">我喜欢黄 ...
- 菜鸟学Java(二十一)——怎样更好的进行单元測试——JUnit
測试在软件生命周期中的重要性,不用我多说想必大家也都很清楚.软件測试有许多分类,从測试的方法上可分为:黑盒測试.白盒測试.静态測试.动态測试等:从软件开发的过程分为:单元測试.集成測试.确认測试.验收 ...
- vs2005中的WebBrowser控件的简单应用
原文:vs2005中的WebBrowser控件的简单应用 这个控件被封装了一下,和以前的调用方式稍有不同.事件还是那几个,变化不大.方法变了不少.从网上能查到的资料不多,贴出一些代码来作参考.看看这段 ...
- DDD,ORM还是Ado.Net
三层还是DDD,ORM还是Ado.Net,何去何从? 我本想把这个问题放到博问去,前几次有去博问问过之类的问题,无奈大神们可能都不屑回答别人的低级问题.所以放到随笔里,一方面把自己对ORM.架构的一些 ...
- mcstructs-MircoCStructs用C语言实现的微型数据结构库
以C语言的方式,我将逐步实现以下算法: 我的Github地址为:https://github.com/tfa2012/mcstructs 1 线性链表 2 环形缓冲区 3 Hash表
- leetcode[55] Merge Intervals
题目:给定一连串的区间,要求输出不重叠的区间. Given a collection of intervals, merge all overlapping intervals. For exampl ...
- NFTS数据流
NFTS数据流 NTFS交换数据流(alternate data streams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每一个文件都能够存在多个数据流,就是说除了主文件流之外 ...
- javascript 学习总结(七)String对象
1.string对象中可以传正则的函数介绍 /* match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配. 该方法类似 indexOf() 和 lastIndexOf(),但是 ...