WPF学习总结和记录(六)-文本和墨水

https://blog.csdn.net/fffanpei/article/details/8535002

1. ProgressBar

ProgressBar 有一个默认的Minimum 属性0,和一个默认的Maximum 属性100,它只添加了两个RangeBase 已经提供了的公共属性:
·IsIndeterminate —— 当把它设置为true 时,ProgressBar 会显示一段通用的动画(这样,Minimum、Maximum 以及Value 的值不会影响这段动画)。如果你不知道具体需要花费多长时间,或者你懒于去做显示真正进度的工作,这非常有用!
·Orientation —— 默认为Horizontal,但是也可以被设置为Vertical,可以使进度从下走到上而不是从左走到右。除了那些老式的全屏安装软件以外,还没见到有应用程序使用“温度计样式”的垂直进度条,但是不管怎么说这使得实现这种效果变得很容易!

2. Slider

Slider 比ProgressBar 稍微复杂一点,因为它使用户能够通过在刻度尺移动手指光标来改变当前的值。

Slider 也有一个默认的Minimum 属性值0 和一个默认的Maximum 属性值10,同样也定义了Orientation属性(默认是Horizontal),但是它包含了几个属性,用于调整刻度的位置和频率、ToolTip 的位置和精度(这个ToolTip 是用来显示手指光标移动到了哪个当前值)、决定手指光标是自动贴近刻度值还是平滑地移动到任何值。对于键盘导航来说,Slider 同样包含了Delay 以及Interval 属性,它们与RepeatButton 的同名属性一致。

要启用刻度,可以把TickPlacement 设定为TopLeft、BottomRight 或者Both。TickPlacement 的值名字很奇怪,但是它们包含了Slider 的方向。当TickPlacement 被设置为BottomRight,如果Slider 是水平的,刻度就在底部;如果是垂直的,就在右边。类似地,当TickPlacement 被设置为TopLeft 时,如果Slider 是垂直的,刻度就在顶部;如果Slider 是水平的,刻度就在左边。当TickPlacement 被设置为None(默认值)时,手指光标被给予了一个更简单的外观。

文本和墨水控件

1. TextBox

使用户能够输入一行或者多行文字。和其他大部分WPF 控件不一样的是,内容不是存储为一个通常的System.Object,而是存储在一个叫作Text 的字符串属性中。

尽管TextBox 表面上看起来像一个简单控件,但它却内建了各种功能支持:与Cut、Copy、Paste、Undo和Redo 命令的绑定(就像在之前章节所看到的),甚至还可以与拼写检测绑定。
TextBox 包含了几个(通过选择、行号等)获得文字块的方法和属性,还有用来在字符索引、行索引以及物理点之间进行转换的函数。它也定义了TextChanged 以及SelectionChanged 事件。


除非TextBox 的尺寸被它的周边内容(或者给定的显式尺寸)所限制,否则它会随着内部文字的增长而增长。但是当TextBox 的宽被限制时,通过设定TextWrapping 属性为Wrap 或者WrapWithOverflow,可以将文字换行形成额外的行。Wrap 不允许有任何一行超过控件的边界,即使在一个字的中间,它也会强行换行。WrapWithOverf low 仅会保留一行,只要一有机会,长文字就会被截断。

要启用TextBox(或者RichTextBox)中的拼写检查,可以设置SpellCheck.IsEnabled 属性为true。这种体验与Microsoft Word 的拼写检查类似,它会为拼写有问题的字加上红色下划线,可以用鼠标右键单击它来查看并应用建议的字。

2.RichTextBox

RichTextBox 是一种更加高级的TextBox,它能包含格式化的文字(以及嵌在文字当中的任意对象)。

RichTextBox 的属性比TextBox 的对应属性更复杂。TextBox 提供了简单的整数属性,如CaretIndex、SelectionStart 和SelectionEnd。RichTextBox 提供了一个TextPointer 类型的CaretPosition 属性,以及TextSelection 类型的Selection 属性。另外,RichTextBox 的内容存在一个Document 属性里(类型是FlowDocument),而不是存在一个简单的字符串类型的Text 属性里。

3. PasswordBox

PasswordBox 是一种设计更简单的TextBox,用于输入密码。它不会显示输入的文字,而是显示小圆点。

PasswordBox 和前面两个控件不同的是,它不是从TextBoxBase 继承的,所以它不支持Cut、Copy、Undo 和Redo 命令(但它支持Paste),也不支持拼写检查。

PasswordBox 的文本保存在一个叫作Password 的字符串属性里。内部把密码存在一个System.Security.SecureString 对象中,这样可以增加一些额外的保护。一个普通的System.- String 的非加密内容会被存在垃圾回收站中并保存一段时间,但SecureString 的内容是被加密的,并会被强行清空。

只定义了一个Password- Changed 事件。

4. InkCanvas

令人惊异的InkCanvas 是一种万能的元素,它的主要目的是(通过鼠标或者和指示笔)捕捉笔迹。

InkCanvas 从技术上说不是一个控件,因为它直接从FrameworkElement 继承而来,但是它的行为和控件非常像(但不能用一个新的模板来改变它的样式)

通过使用InkCanvas 的DefaultDrawingAttributes 属性,可以改变以后输入的笔画外观(宽度、颜色等)。Stroke 有它自己的DrawingAttribute 属性,这样才能基于每一笔每一画来进行外观修改。

InkCanvas 支持几种模式,它们能利用EditingMode 属性被独立地应用到指示笔尖(或鼠标),并通过Edit ingModeInverted 属性来应用于指示笔的末端(back end)。只读的ActiveEdit ingMode 属性可以告诉你哪一个属性当前正在被使用。所有这3 个属性都是InkCanvasEdit ingMode 类型的,它有以下几种值:
·Ink(Edit ingMode 的默认值)—— 通过鼠标或者指示笔来绘制笔画。
·InkAndGesture —— 和Ink 一样,但同样可以识别用户的手势。手势的列表(Up、Down、Circle、ScratchOut 和Tap)保存在System.Windows.Ink.Applicat ionGesture 枚举类型中。
·GestureOnly —— 只识别手势,不会绘制用户输入的笔画。
·EraseByStroke (Edit ingModeInverted 的默认值)—— 当笔画被触及时将笔画擦掉。
·EraseByPoint —— 只擦掉直接碰及到的笔画部分(就像传统的铅笔橡皮)。

·Select —— 当被触及时,选择笔画或者任何UIElement,使它们能被删除、移动或者在InkCanvas 范围内被调整尺寸。
·None —— 对于鼠标或者指示笔不做任何响应。

一个综合的例子

 <StackPanel Margin="5">
        <!--Check spell-->
        <TextBox SpellCheck.IsEnabled="true" ></TextBox>
        <RichTextBox></RichTextBox>
        <Label>Password</Label>
        <PasswordBox></PasswordBox>
        <InkCanvas></InkCanvas>
    </StackPanel>

可以看出 第一个有拼写检查 。

地下可以进行鼠标绘制。

控件学习完了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值