标签控件其实和文本框长得很像。但是,标签除了文本属性,还有一个内容属性。就因为这一点,标签除了容纳文本之外,可以容纳各种控件。标签的内容可以是字符串,如下:

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

有没有注意到另外一个细节?标签默认情况下就有边框留空,这样文本会显示在离左上角稍微一点距离的地方。这个在文本框可没有,你必须手动设置。

这个例子可以看到,如果标签内容是一个字符串,那么标签就会自动生成一个文本框来显示文本。

标签 vs. 文本框

下面我们来对比一下标签和文本框。最明显的区别是文本框只能显示一条文本字符串,而标签可以进行如下操作:

  • 定义边界
  • 显示其他控件,如图片
  • 通过ContentTemplate属性来使用模板
  • 使用访问键将焦点集中于相关控件

最后一条其实是使用标签而不用文本框的最主要原因。如果你只是要显示一条文本,那么还是用文本框为好,因为它更轻巧更好用。

标签和快捷键

在Windows和其他操作系统中,通常你可以用组合键来访问控件,按住[Alt]键,然后按下对应于该控件的字母键,就可以了。当你按住[Alt]键时,字母键会高亮显示。文本框不支持这个功能,而标签可以,所以这个标签就非常有用了。

<span style="font-size:14px;"><Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="LabelControlSample" Height="180" Width="250">
        <StackPanel Margin="10">
                <Label Content="_Name:" Target="{Binding ElementName=txtName}" />
                <TextBox Name="txtName" />
                <Label Content="_Mail:" Target="{Binding ElementName=txtMail}" />
                <TextBox Name="txtMail" />
        </StackPanel>
</Window></span>

界面显示的是你按下[Alt]键时的情景,会出现一条下划线。尝试按下[Alt]键,然后按N和M,你会发现光标是如何在两个文本框切换的。

来总结一下:首先,我们通过在字母前面加一条下划线来定义快捷键,不一定必须是首字母,任何位置的字母都可以。一般都是使用首字母作为快捷键,当然,这个字母在其他控件那里没有被用过。其次,我们使用Target属性来把所需要的控件绑定到标签。我们使用标准的WPF绑定,通过一个ElementName属性。这些在以后会讲到。绑定是基于控件名字的,一旦控件名字变了,那么绑定的地方一定要记得修改。

控件作为标签内容

上面提到,标签可以存放其他控件,而且不影响其他控件的特性。我们来尝试一下,把一张图片和一段文字放到标签里,同时给它们设置快捷键。

<span style="font-size:14px;"><Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlAdvancedSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="LabelControlAdvancedSample" Height="180" Width="250">
        <StackPanel Margin="10">
                <Label Target="{Binding ElementName=txtName}">
                        <StackPanel Orientation="Horizontal">
                                <Image Source="http://cdn1.iconfinder.com/data/icons/fatcow/16/bullet_green.png" />
                                <AccessText Text="_Name:" />
                        </StackPanel>
                </Label>
                <TextBox Name="txtName" />
                <Label Target="{Binding ElementName=txtMail}">
                        <StackPanel Orientation="Horizontal">
                                <Image Source="http://cdn1.iconfinder.com/data/icons/fatcow/16/bullet_blue.png" />
                                <AccessText Text="_Mail:" />
                        </StackPanel>
                </Label>
                <TextBox Name="txtMail" />
        </StackPanel>
</Window></span>

这相当于是上面例子的扩展。现在标签里不单单只有文本,而是包含了一张图片和一条文字(在AccessText里我们仍旧可以设置快捷键)。不知道你们有没有注意到,标签里是通过两个水平对齐的StackPanel来实现的,为什么不直接放图片和文字呢?这是因为,和其他ContentControl控件一样,标签只能包含一个子控件。

图片控件使用了一个远程的图片,这只是为了方便例子中的使用,实际应用中最好不用。后面我们会详细讲到。

在大多数情况下,标签如它的名字那样,只是作为一个其他控件的标记。这是它最主要的作用。如果不是这种情况,你最好使用文本框,或者WPF提供的其他文本容器。

标签控件其实和文本框长得很像。但是,标签除了文本属性,还有一个内容属性。就因为这一点,标签除了容纳文本之外,可以容纳各种控件。标签的内容可以是字符串,如下:<Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlSample" xmlns="http://schemas.microsoft.com/winfx 数字墨迹: SaveFileDialog和 InkPresenter 文档:DocumentViewer、FlowDocumentPageViewer、FlowDocumentReader、 FlowDocumentScrollViewer 和 StickyNoteControl 输入:TextBox、RichTextBox 和 PasswordB.. form:指放表单 控件 的区域。 里面可以嵌套其他属性,acion=“接口地址”,method=“gtt/post” name=“表单名称” 主要添加表单的 标签 ; 属性:type= “text” 文本框 type=“password” 密码框 type=“submit” 提交按钮 type=“reset” 重置按钮
标签 扩展作为XAML对象赋值的一种方式,也是十分重要的一种方式,对于需要获取其他文件的Data, 标签 扩展提供了很多方式 文章目录BindingStaticResorceTemplateBindingRelativeSource Binding Binding(XAML载入时,将数据绑定到XAML对象),语法结构示例: <Button x:Name="bindingbtn" Width="100"/> <Button Width="{Binding ElementName=bindi.
WPF 中x:Name是XAML的声明 标签 ,一个XAML 标签 会对应着一个对象,这个对象一般是 控件 类的实例。XAML 标签 只负责声明对象而不声明引用对象。如果需要为对象准备一个引用变量以便在 C# 中直接访问的话就就可以使用x:Name 标签 了 。 x:Name 标签 的作用: 1、 告诉XAML编译器,当一个 标签 带有x:Name时处理对这个 标签 生成对应实例外还要为这个实例声明一个引用变量,变量名就是x:Nam...
目录重要的H 标签 主要 标签 h系列 标签 主要用来做标题。h1到h6 依次缩小。p 标签 :段落。div 标签 :表示大的容器。span:放一些文本。a 标签 :超链接。img 标签 :增加背景图片块级 标签 和行内 标签 重要的H 标签 主要 标签 h系列 标签 主要用来做标题。h1到h6 依次缩小。 <!DOCTYPE html> <meta charset="UTF-8"> <title></title> </head&g
2. 定义行和列 在Grid 控件 中,可以通过定义行和列来确定UI元素的位置。要定义行和列,请使用Grid.RowDefinitions和Grid.ColumnDefinitions属性。以下是一个例子: <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <!-- UI元素将被添加到此处 --> </Grid> 在这个例子中,我们定义了两个行,第一个行的高度是Auto,第二个行的高度是*,这意味着它会占据Grid 控件 中剩余的空间。我们还定义了两列,第一列的宽度是*,第二列的宽度是Auto,这意味着第一列将占据Grid 控件 的大部分空间,第二列将占据其余空间。 3. 添加UI元素 要向Grid 控件 添加UI元素,请将它们放在Grid中,并为它们指定Grid.Row和Grid.Column属性。例如,以下代码向刚刚定义的Grid 控件 中添加了两个Button: <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Button Grid.Row="0" Grid.Column="0" Content="Button 1" /> <Button Grid.Row="0" Grid.Column="1" Content="Button 2" /> </Grid> 在这个例子中,第一个Button位于第一个行的第一个列,第二个Button位于第一个行的第二列。 4. 合并行和列 在Grid 控件 中,可以合并相邻的行或列,以创建更复杂的布局。要合并行或列,请将多个UI元素的Grid.RowSpan或Grid.ColumnSpan属性设置为相同的值。例如,以下代码创建了一个跨越两行的TextBox: <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <TextBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" /> <Button Grid.Row="1" Grid.Column