WPF教程(十四)文本框

2016-10-14 08:08:27来源:CSDN作者:seanbei人点击

文本框本质上并不是一个控件,因为它不继承于控件类,然而在WPF中它使用情况和其他控件几乎一样,因此我们仍称它为控件。

文本框控件是WPF中最基础的控件之一,非常实用。它将文字显示到屏幕上,和标签控件一样,但是比标签更简单,占资源更少。普遍的共识是标签用于简短的单行文本(包括图片),而文本框多用于多行文本。标签和文本框各有优点,根据具体情况来使用。

在"Hello, WPF!"一章中,我们已经使用过一个文本框控件,下面,我们来看看文本框最简单的格式:

<span style="font-size:14px;"><Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="TextBlockSample" Height="100" Width="200">    <Grid>                <TextBlock>This is a TextBlock</TextBlock>    </Grid></Window></span>

A simple TextBlock control

这没什么新鲜的,TextBlock之间的文字其实是Text属性的快捷设置。

下面我们尝试把一段长文字放到文本框,看看它是如何工作的。为了看起来更舒服,加了一个留边空白。

<span style="font-size:14px;"><Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="TextBlockSample" Height="100" Width="200">    <Grid>                <TextBlock Margin="10">This is a TextBlock control and it comes with a very long text</TextBlock>    </Grid></Window></span>
A simple TextBlock control with text that's too long to fit

处理长字符串

很快就能发现,文本框可以很好的兼容长字符串,但是不会自动换行,需要设置。上面的文本太长,无法在窗口显示完整。

下面就来处理这个问题:

<span style="font-size:14px;"><Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="TextBlockSample" Height="200" Width="250">    <StackPanel>                <TextBlock Margin="10" Foreground="Red">                        This is a TextBlock control<LineBreak />                        with multiple lines of text.                </TextBlock>                <TextBlock Margin="10" TextTrimming="CharacterEllipsis" Foreground="Green">                        This is a TextBlock control with text that may not be rendered completely, which will be indicated with an ellipsis.                </TextBlock>                <TextBlock Margin="10" TextWrapping="Wrap" Foreground="Blue">                        This is a TextBlock control with automatically wrapped text, using the TextWrapping property.                </TextBlock>        </StackPanel></Window></span>
A TextBlock control showing several ways to deal with long strings

上面用了三个文本框,每一个都用不同的颜色,它们用不同的方式处理了文本太长的问题。

红色文本框使用LineBreak标记在指定的位置换行。它给了你绝对的控制权,能做到随时切换到新行。但是很多情况下却不适用。如果用户把窗口拉大,文本仍在原来的位置换行,即使有足够的空间把整个文本一行显示。

绿色文本框使用TextTrimming属性赋值为CharacterEllipsis,当文本无法显示全的时候显示为省略号。这很好的显示了文本很长但是不够显示完整。如果你有很长的文本但是不想显示多行,那么这是一个很好的方法。另外你还可能用到WordEllipsis,它以单词为单元进行省略,而不是以字母,防止一个单词只显示部分。

蓝色文本框使用TextWrapping属性赋值为Wrap,它能让文本自动换行。与第一种手动切换相比,它是完全自动的。它还能随着空间的改变而自动调整。通过拉大或缩小窗口,你会发现自动换行发挥完美。

用文本框处理简单的字符串就讲这么多。下一章我们将探寻文本框的更深一层的功能,如创建各种样式的文本等等。


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台