Label控件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:Visual Studio 2015
作者:李成富
撰写时间:2019年8月12日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Label 控件通常在用户界面 (UI) 中提供信息。一直以来,Label 只包含文本,但由于 Windows Presentation Foundation 附带的 Label 是一个 ContentControl,所以它可以包含文本或 UIElement. Label 为快捷键提供功能性和可视化支持。它常用于实现对控件(如 TextBox)的快速键盘访问。
Label控件在最简单的形式下和TextBlock控件看起来非常像,但很快就会发现,Label使用的是Content属性而不是Text属性。这是因为Label内部可以放置任意类型的控件而不仅仅是文本。当然这个内容也可以是一个字符串,例子中看到这个用法:
<Grid>
<Label Content="This is a Label control." />
</Grid>
效果图:
标签默认情况下就有边框留空,这样文本会显示在离左上角稍微一点距离的地方。这个在文本框可没有,你必须手动设置。
Label控件和TextBlock控件的对比:
Label和TextBlock之间有一些重要的区別。
TextBlock允许呈现文本字串,而Label还允许做下列的事情:
- 设定边界(border)
- 渲染其他控件,例如一张图片
- 通过ContentTemplate属性使用模板化的内容
- 使用访问键聚焦到相关的控件上
使用Label取代TextBlock控件的其中一个主要原因:当只是需要渲染简单的文本内容时,你应该使用TextBlock控件,因为它更轻量并且在大多数场景下性能比Label好。
标签和快捷键
在Windows和其他操作系统中,通常可以用组合键来访问控件,按住[Alt]键,然后按下对应于该控件的字母键,就可以了。当你按住[Alt]键时,字母键会高亮显示。文本框不支持这个功能,而标签可以,所以这个标签就非常有用了。
XAML代码:
<StackPanel Margin="10">
<Label Content="_Name:" Target="{Binding ElementName=txtName}" />
<TextBox Name="txtName" />
<Label Content="_Mail:" Target="{Binding ElementName=txtMail}" />
<TextBox Name="txtMail" />
</StackPanel>
效果图(右边是按住[Alt]键时,字母键会高亮显示):
界面右边显示的是按下[Alt]键时的情景,会出现一条下划线。尝试按下[Alt]键,然后按N和M,你会发现光标是如何在两个文本框切换的。
总结:首先,通过在字母前面加一条下划线来定义快捷键,不一定必须是首字母,任何位置的字母都可以,一般都是使用首字母作为快捷键,当然,这个字母在其他控件那里没有被用过。其次,使用Target属性来把所需要的控件绑定到标签。使用标准的WPF绑定,通过一个ElementName属性。绑定是基于控件名字的,一旦控件名字变了,那么绑定的地方一定要记得修改。