【IT168技术】信息显示和文本显示控件是一组最常用的控件,它们用来在程序中显示提示信息、接受用户的输入,或者显示进度以及密码等敏感数据的输入。下面将介绍此类控件的基本功能和使用方法,它们是:TextBlock、TextBox、PasswordBox和ProgressBar。
▲图书介绍
TextBlock
该控件用于显示只读的,少量的文本信息,通常用来在程序界面中显示一些标识性的提示信息,类似于大家所熟悉的Lable控件。
通过设置TextBlock控件的Text属性来设置文本内容,通过TextAlignment、HorizontalAlignment和VerticalAlignment属性对齐父容器布局内的TextBlock。
TextBlock还可以表示包含在不同的Run元素中的一系列字符串,而不是表示单个字符串。LineBreak对象表示TextBlock中的显式换行,并且通常用于在Run元素之间。LineBreak和Run共享自Inline,因此,TextBlock可以承载其文本模型内容的InlineCollection。该InlineCollection也是TextBlock XAML内容属性,要在TextBlock模型中指定项,只需将不同的Run和LineBreak指定为TextBlock的子元素即可。
【XAML代码】
-或者-
<TextBlock>
声明内容的对象元素
</TextBlock>
-或者-
<TextBlock ...>一个字符串</TextBlock>
【示例】
下面通过一个示例来演示如何在XAML中通过使用LineBreak进行分组Run对象,在TextBlock指定多个不同格式的文本。
<LineBreak />
<Run Foreground="#FFF22600" FontFamily="Segoe WP Semibold" FontSize="48" Text="Seqoe WP Semibold 30"></Run>
<LineBreak />
<Run Foreground="Lime" FontFamily="Georgia" FontSize="36" FontStyle="Italic" Text="Georqia lime 22"></Run>
<LineBreak />
<Run Foreground="#FFFCFCFC" FontFamily="Arial" FontSize="28" FontWeight="Bold" Text= "Arial 18"></Run></TextBlock>
以上代码的运行效果如图6-20所示。
▲
TextBox控件
该控件用于显示可编辑的文本,如需使TextBox只读,可以通过设置IsReadOnly属性来实现,将该属性设置为true,则不支持编辑。如果需要启用多行文本显示和编辑,可以通过设置AcceptsReturn属性实现,同时使用HorizontalScrollBarVisibility或VerticalScrollBar-Visibility属性以启用水平滚动条或垂直滚动条。可以使用BorderThickness和BorderBrush属性修改TextBox的边框。如要隐藏TextBox周围的边框,只需将TextBox的BorderThickness属性设置为0。
【XAML代码】
【示例】
下面通过一个示例来了解一下TextBox的使用。示例将实现一个简单的“小费计算器”。示例小程序的主界面将由3个TextBox组成,其中两个用来接收用户输入的信息,另一个用来显示计算结果。示例中所有的其他提示性文字都是用TextBlock来显示。
1)首先建立一个新的Windows Phone Application项目文件,将3个TextBox放入界面,另外放入若干个TextBlock用于显示提示信息,将其中一个TextBox控件的IsReadOnly设置为true,由于没有修改控件的默认名称,因此,它们的名称应该是:用于接受消费金额的TextBox是TextBox1,用于接受小费比例的TextBox控件是TextBox2,用于显示应付小费金额的TextBox是TextBox3。
▲程序的界面如图6-21所示。
2)读者可能会发现界面中没有Button控件,那么如何来计算消费呢?这里将采用输入消费金额即可计算消费的模式,也就是说要在用户输入消费金额的同时计算出消费金额,为了要时刻监控用户是否输入或者改变了输入的数据,需要使用TextBox1的TextChanged事件,该事件在每次检测到TextBox1控件内容变化时被触发。
如图6-22所示,在事件管理器中添加对此事件的响应。
3)这里有个小问题,就是每次计算消费还需要用户输入一个消费比例,但是每次都要输入会很麻烦,因此,有必要在程序加载的时候预设一个通用比例(例如15%)。如何解决这个问题呢?最简单的做法就是响应TextBox2的Loaded事件,该事件将会在TextBox2控件被完全加载后触发,
如图6-23所示。
4)为两个事件添加相应的代码如下:
private void textBox2_Loaded(object sender, RoutedEventArgs e)
{
textBox2.Text = "0.15";
}
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
if (textBox1.Text != "" & textBox2.Text != "")
{
Double a = Double.Parse(textBox1.Text);
Double b = Double.Parse(textBox2.Text);
textBox3.Text = (a * b).ToString();
}
}
5)程序运行后,输入一个数字在消费金额上,当输入完毕后即可看到消费金额已经计算完毕并显示,
▲如图6-24所示。
在这个示例中,并没有采用标准思路的Button来触发用户的操作,而是改用了TextBox的TextChanged事件。这种方法有时候会在项目设计中带来意想不到的便捷操作体验。在计算过程中,为了防止用户完全清除了消费金额和消费比例TextBox中的内容而导致计算错误,还使用了一个IF语句进行验证,确保在有数据的情况下才进行计算。但是这个验证的方法并不完善,因为它只能检验TextBox内容是否为空,而不能检验其中输入的信息是否为数字,如果用户输入了字母或其他字符将会导致错误。这一点,留给有兴趣的读者去完善。
PasswordBox控件
PasswordBox控件用于输入敏感的不便透露的信息,比如密码。输入后,控件只使用PasswordChar属性指定的密码字符来显示输入的字符数,而不会显示文本本身的内容。值得注意的是,如果需要获取PasswordBox控件的内容,需要访问其特有的内容属性Password。图6-25表示了一个被输入字符的PasswordBox,不太常见的是在这里使用了中文“密”来替代传统的“*”。
▲图6-25 PasswordBox控件
【XAML代码】
4.ProgressBar
该控件用来表示一个操作的进度。它有两种样式:显示重复模式的条和基于值进行填充的条。两种样式是由IsIndeterminate属性来进行设置的,如果设置该属性为true,那么控件将显示重复的模式,如果为false,则显示为基于值的进度条模式。
如果控件以基于值的进度条模式运行的话,还可以使用Minimum和Maximum属性来设置范围,Minimum默认为0,而Maximum默认为100。同时,进度条的当前取值由Value属性来控制。
【XAML代码】: