WPF进阶技巧和实战03-控件(3-文本控件及列表控件)
系列文章链接
- WPF进阶技巧和实战01-小技巧
- WPF进阶技巧和实战02-布局
- WPF进阶技巧和实战03-控件(1-控件及内容控件)
- WPF进阶技巧和实战03-控件(2-特殊容器)
- WPF进阶技巧和实战03-控件(3-文本控件及列表控件)
- WPF进阶技巧和实战03-控件(5-列表、树、网格01)
- WPF进阶技巧和实战03-控件(5-列表、树、网格02)
- WPF进阶技巧和实战03-控件(5-列表、树、网格03)
- WPF进阶技巧和实战03-控件(5-列表、树、网格04)
- WPF进阶技巧和实战04-资源
- WPF进阶技巧和实战05-样式与行为
- WPF进阶技巧和实战06-控件模板
- WPF进阶技巧和实战07--自定义元素01
- WPF进阶技巧和实战07--自定义元素02
- WPF进阶技巧和实战08-依赖属性与绑定01
- WPF进阶技巧和实战08-依赖属性与绑定02
- WPF进阶技巧和实战08-依赖属性与绑定03
文本控件
WPF提供了3种用于输入的文本控件:TextBox、RichTextBox和PasswordBox。前两种继承自TextBoxBase类,最后一个继承自Control类。文本框能够包含的内容类型是有限的。TextBox控件总是存储字符串(Text属性),PasswordBox控件也处理字符串内容(Password属性)。只有RichTextBox控件可以存储更复杂的内容(可包含复杂元素组合的FlowDocument对象)
多行文本
TextBox控件通常存储单行文本(可以通过设置MaxLength属性来限制字符的数量)。有些情况下需要处理大量内容,也就要使用多行文本框。TextWrapping属性设置为Wrap或者WrapWithOverflow,如果是前者,总是会在控件的边缘换行,甚至将一个特别长的单词放在两行中。如果是后者,换行算法在没有发现合适的位置(空格或者连字符)进行换行,就允许拉伸某些行使其超出右边缘。
为了能自动在文本框中看到多行文本,需将其尺寸设置的足够大。不应该设置硬编码的高度(这样不能适应不同的字体大小,而且可能导致布局问题),可使用方便的MinLines和MaxLines属性,分别设置文本框中必须显示的最小行数和能够显示的最大行数。
如果文本框支持换行,用户可输入更多能够立即在可视行中显示的文本。因此通过将VerticalScrollBarVisibility属性设置为Visible或者Auto,添加始终显示或按需显示的滚动条是有意义的。如果允许在用户在多行文本框中通过Enter输入回车,需要将AcceptsReturn属性设置为true。也可以通过设置AcceptsTabs属性,允许用户输入Tab键。TextBox还提供了几个方法,通过这些方法可使用代码以较小或者较大的步长在文本内容中移动。LineUp,LineDown,PageUp,PageDown,ScrollToHome,ScrollToEnd,ScrollToLine。
如果是为了显示文本的文本框,这时可以使用IsReadOnly属性设置为true以阻止编辑文本。最好通过IsEnabled属性设置为false来禁用文本框,会显示灰色的文本,不支持文本选择和复制,滚动。
选择文本
任何文本框都可以通过鼠标单击并拖动鼠标,或者按住shift键并使用方向键在文本中移动来选择文本。TextBox类还提供了使用SelectionStart、SelectionLength以及SelectedText属性,通过编程决定选择哪些文本或改变当前所选文本的能力。
SelectionStart属性确定所选文本的开始位置,该位置从0开始。SelectionLength属性指示选中的字符的总数量,0表示未选中字符。SelectedText属性可快速检查或者改变在文本框中选中的文本。可以通过处理SelectionChanged事件对文本选择变化加以响应。还提供了控制文本选择行为的属性AutoWorldSelection,如果为true,那么当在文本中拖动鼠标时文本框每次会选择整个单词。
文本框有Undo功能,允许用户撤销最近的操作。只要未将CanUndo属性设置为false,就可以通过代码获取Undo功能,调用此方法,并使用Ctrl+Z快捷键。
TextBox还支持拼写检查,只需要将SpellCheck.IsEnabled依赖项属性设置为true即可。目前只局限于4中语言:英语、法语、德语、西班牙语。可通过TextBox控件的Language属性重写默认设置,拼写检查根据键盘配置的输入语言来决定使用哪个词典。
PasswordBox
和TextBox类似,但是通过显示圆圈符号字符串来屏蔽实际字符(可以通过设置PasswordChar属性选择不同的屏蔽字符),不支持剪切板,不能复制内部文本。
提供了MaxLength属性,Clear(), Paste(), SelectAll() 方法,文本发生变化时触发PasswordChanged时间。
列表控件
主要包含ListBox、ComboBox,以及ListView、TreeView、ToolBar控件。这些控件都继承自ItemsControl类。ItemsControl类添加了所有基于列表的控件都是用的基本功能。最显著的是,提供了填充列表的两种方式。最直接的办法是使用代码或者XAML将列表项直接添加到Items集合中。使用数据绑定的形式,需要将ItemsSource属性设置为希望显示的具有数据项集合的对象。
ItemsControl类之后继承有一些混乱,一个主要分支是选择器Selector,包括ListBox、ComboBox以及TabControl,这些控件都继承自Selector类,都具有跟踪当前选择项SelectItem或者选择位置SelectIndex的属性。另一个分支以不同方式选择列表项,主要包括菜单、工具栏、树。
ListBox
ListBox代表了最常用的列表项,允许用户选择其中一项。可以通过SelectionMode属性设置选择模式,Multiple(通过单击项进行选择或者取消选择)、Extended(需要按下Ctrl键选择其他项,或者按下Shift键选择某个范围)、Single(默认单选),可以通过SelectedItems集合或者SelectedItem属性来获取所有选择项。
ListBox是一个非常灵活的控件,它不仅包含ListBoxItem对象,也可以驻留其他任意元素,因为ListBoxItem类继承自ContentControl类,能够嵌套内容。ListBoxItem对象会调用ToString方法并显示最终的文本。
ComboBox
ComboBox控件和ListBox控件类似,该控件包含ComboBoxItem对象的集合,既可以显式地也可以隐式地创建该集合。ComboBox也可以嵌套任何元素的内容控件。ComboBox控件使用下拉列表,一次只能选择一项。
如果希望允许用户在组合框中通过输入文本选择一项,就必须将IsEditable属性设置为true,并且比偶徐确保选项集合中存储的是普通的纯文本的ComboBoxItem对象,或是提供有意义的ToString表示的对象。
ComboBox控件的局限之一在于当使用自动改变尺寸功能时该控件改变自身尺寸的方式。该控件加宽自身以适应它的内容,这意味着当从一项移动到另一项时它会改变自身大小,但没有简便的方法告诉ComboBox控件使用所包含项的最大尺寸。
WPF进阶技巧和实战03-控件(3-文本控件及列表控件)的更多相关文章
- WPF进阶技巧和实战03-控件(4-基于范围的控件及日期控件)
系列文章链接 WPF进阶技巧和实战01-小技巧 WPF进阶技巧和实战02-布局 WPF进阶技巧和实战03-控件(1-控件及内容控件) WPF进阶技巧和实战03-控件(2-特殊容器) WPF进阶技巧和实 ...
- WPF进阶技巧和实战03-控件(1-控件及内容控件)
所有控件都继承自System.Windows.Controls.Control类,这个类添加一些基本结构: 设置控件内容对齐方式 (HorizontalContentAlignment,Vertica ...
- WPF进阶技巧和实战06-控件模板
逻辑树和可视化树 System.Windows.LogicalTreeHelper System.Windows.Media.VisualTreeHelper 逻辑树类(LogicalTreeHelp ...
- WPF进阶技巧和实战03-控件(5-列表、树、网格02)
数据模板 样式提供了基本的格式化能力,但是不管如何修改ListBoxItem,他都不能够展示功能更强大的元素组合,因为了每个ListBoxItem只支持单个绑定字段(通过DisplayMemberPa ...
- WPF进阶技巧和实战03-控件(5-列表、树、网格01)
列表控件 ItemsControl为列表项控件定义了基本功能,下图是ItemsControl的继承关系: 在继承自ItemsControl类的层次结构中,还显示了项封装器(MenuItem.TreeV ...
- WPF进阶技巧和实战08-依赖属性与绑定03
数据提供者 在大多数的代码中,都是通过设置元素的DataContext属性或者列表控件的ItemsSource属性,从而提供顶级的数据源.当数据对象是通过另一个类构造时,可以有其他选择. 一种是作为窗 ...
- WPF进阶技巧和实战09-事件(1-路由事件、鼠标键盘输入)
理解路由事件 当有意义的事情发生时,有对象(WPF的元素)发送的用于通知代码的消息,就是事件的核心思想.WPF通过事件路由的概念增强了.NET事件模型.事件由允许源自某个元素的事件由另一个元素引发.例 ...
- WPF进阶技巧和实战03-控件(5-列表、树、网格04)
ListView控件 ListView继承自简单的没有特色的ListBox,增加了对基于列显示的支持,并增加了快速切换视图或显示模式的能力,而不需要重新绑定数据以重新构建列表. ListView类继承 ...
- WPF进阶技巧和实战08-依赖属性与绑定02
将元素绑定在一起 数据绑定最简单的形式是:源对象是WPF元素而且源属性是依赖项属性.依赖项属性内置了更改通知支持,当源对象中改变依赖项属性时,会立即更新目标对象的绑定属性. 元素绑定到元素也是经常使用 ...
随机推荐
- 让tp6显示详细的错误信息及行号
方法一:默认情况下Ttp6不会显示错误信息,在开发环境下想要查看错误信息需要将Config目录下的app.php文件的show_error_msg改成true 但是这样显示的信息也不够完整, 要看到更 ...
- CURL的模拟登录和抓取页面
<?php $curl = curl_init();// 初始化 // 准备提交的表单数据之账号和密码.(这个是根据表单选项来的) $data = "_username=6049892 ...
- IDL使用
出错的问题,可能是因为路径,或者没有建立工程文件. 运行IDL并在preferences项里修改设置(如图中红框所示) (IDL 8.4中在) 2, 中文字符显示乱码,改为gb2312
- spl_autoload_register 实现自动加载
spl_autoload_register 注册给定的函数作为 __autoload 的实现 bool spl_autoload_register ([ callable $autoload_func ...
- python在iis获取header
#print os.environ['QUERY_STRING']#print os.environ['HTTP_HOST'] #print '---------------------------- ...
- 【CTF】msf和impacket联合拿域控内网渗透-拿域控
前言 掌控安全里面的靶场内网渗透,练练手! 内网渗透拿域控 环境:http://afsgr16-b1ferw.aqlab.cn/?id=1 1.进去一看,典型的sql注入 2.测试了一下,可以爆库,也 ...
- YbtOJ#893-带权的图【高斯消元,结论】
正题 题目链接:https://www.ybtoj.com.cn/problem/893 题目大意 给出一张\(n\)个点\(m\)条边的无向联通图,每条边正反向各有\(A,B,C\)三种边权. 保证 ...
- Javascript 常见的高阶函数
高阶函数,英文叫 Higher Order function.一个函数可以接收另外一个函数作为参数,这种函数就叫做高阶函数. 示例: function add(x, y, f) { return f( ...
- Zookeeper的选举机制和同步机制超详细讲解,面试经常问到!
前言 zookeeper相信大家都不陌生,很多分布式中间件都利用zk来提供分布式一致性协调的特性.dubbo官方推荐使用zk作为注册中心,zk也是hadoop和Hbase的重要组件.其他知名的开源中间 ...
- LightningChart XY功能中的常见问题
LightningChart XY功能中的常见问题 XY 是LightningChart 的重要功能之一,也是被用户使用最广泛的.用户经常对这个功能有着这样那样的疑问,现在将一些常用问题汇总了一下,希 ...