迟到的 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都对行驶 ...
- 【百度地图API】今日小年大进步,齐头共进贺佳节——API优化升级上线,不再增加内存消耗
原文:[百度地图API]今日小年大进步,齐头共进贺佳节--API优化升级上线,不再增加内存消耗 任务描述: 今天是2011年01月26日,小年夜.百度地图API在小年夜献给广大API爱好者一份给力的礼 ...
- java中文件的相对路径以及jar中文件的读取
Java中File类的构造函数需要我们传入一个pathname,当我们传入以"/"开头的pathname表示绝对路径,其他均表示相对路径. 一:绝对路径名:是完整的路径名,不需要任 ...
- 动画云创始人胥克谦&课程格子创始人李天放分享创业经历
原文地址:http://student.csdn.net/mcd/topic/163587/955044 2014年10月18日在北京科技大学成功举办了CSDN高校俱乐部全国巡讲,现场參会学生有一百余 ...
- Impala源代码分析---1
2.Impala源代码分析 參考链接:http://www.sizeofvoid.net/wp-content/uploads/ImpalaIntroduction2.pdf 本章開始进入源代码分析阶 ...
- MySQL 存储过程 经常使用语法
MySQL 存储过程是从 MySQL 5.0 開始添加的新功能.存储过程的长处有一箩筐.只是最基本的还是运行效率和SQL 代码封装.特别是 SQL 代码封装功能,假设没有存储过程,在外部程序訪问数据库 ...
- SSM 使用方法
System Safety Monitor(以下简称为SSM),它是一款俄罗斯出品的系统监控软件,通过监视系统特定的文件(如注册表等)及应用程序,达到保护系统安全的目的.在某些功能上比Winpatro ...
- 验证(C#和正则表达式)
原文:验证(C#和正则表达式) 我们经常会需要验证字符串的格式,比如密码长度范围.电子邮件格式.固定电话号码和手机号码格式等,这个时候我们经常会需要用到正则表达式.但是正则表达式用起来性能会低一点,所 ...
- Ubuntu12.10无法安装openssh-server[已解决]
因为要在Ubuntu下搞些东西,家里的台式有Deepin2013,但是发现有很多依赖的问题,实在不想解决,就到win7下用VBox安装了Ubuntu.打算使用SourceCRT连接虚拟机,但是在安装在 ...
- openwrt的GPIO控制
为什么有些GPIO可以在/sys/class/gpio中控制,而有些不行呢? 先来看一看普通不需要C程序而是使用脚本的控制方法(Linux普遍适用): First step is making GPI ...