在文本框的内容为空时,通常做法默认设置提示一段信息,在文本框输入值变化时切换实际输入值。那么怎么进行设置。
一、文本框显示提示信息
- 文本框未获得焦点且文本框内容为空值时,默认设置提示一段信息。下面代码中,TextBox控件中内部资源用到了画刷VisualBush,有人称为控件画刷,加上容器后可以各种内容。以后下面会介绍各类画刷。
- 在TextBox的Style样式里,画刷作用于文本框的背景色Background属性。
<TextBox Width="120" Margin="5">
<TextBox.Resources>
<VisualBrush x:Key="HintText" TileMode="None" Opacity="0.5" Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock FontStyle="Italic" Text="{x:Static resources:Resource.KeyWord}"/>
</VisualBrush.Visual>
</VisualBrush>
<VisualBrush x:Key="HintText2" TileMode="None" Opacity="0.5" Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock FontStyle="Italic" />
</VisualBrush.Visual>
</VisualBrush>
</TextBox.Resources>
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="IsFocused" Value="False">
<Setter Property="Background" Value="{StaticResource HintText2}"/>
</Trigger>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource HintText}"/>
</Trigger>
<Trigger Property="Text" Value="">
<Setter Property="Background" Value="{StaticResource HintText}"/>
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
效果:进入文本框编辑,里面是白色空字符;离开后,文本Text属性为空字符时,显示为“<Keyword>”,文本Text属性有字符时,显示字符。
二、各类画刷
有6种 画刷 ,都是继承自基类 Brush。常用属性Opacity和Color。
常用属性 | 描述 |
Opacity | 透明度(取值区间在 0-1 之间) |
Color | 填充颜色 |
- 纯色画刷(SolidColorBrus),填充单一颜色。
<Grid <Rectangle Width="100" Height="30" > <Rectangle.Fill> <SolidColorBrush Color="LightPink"/> </Rectangle.Fill> </Rectangle> </Grid>
以上示例,SolidColorBrush绘制Rectangle的Fill。
-
渐变画刷(GradientBrush),抽象类,由渐变停止点组成的渐变。
1)线性渐变画刷(LinearGradientBrush),填充渐变色, 线性渐变在一根线条(渐变轴)中混合了两种或更多颜色。 可以使用 GradientStop 对象指定渐变的颜色及其位置。常用属性 描述 StartPoint 起始位置坐标(取值区间 0~1) EndPoint 结束位置坐标(取值区间 0~1) Offset 渐变向量中渐变停止点的位置(取值区间 0~1) <Grid> <Rectangle Canvas.Top="0" Height="50" Width="450"> <Rectangle.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="1,0"> <GradientStop Color="Yellow" Offset="0"/> <GradientStop Color="Green" Offset="1"/> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> </Grid>
2)径向渐变画刷(RadialGradientBrush),径向渐变将两种或多种颜色混合在一个圆圈中。 与 LinearGradientBrush 类一样,可以使用 GradientStop 对象指定渐变的颜色及其位置。常用属性 描述 GradientOrigin 渐变开始的二维焦点的坐标(取值区间0~1) Center 渐变的最外面圆的中心坐标(取值区间0~1) RadiusX 渐变的最外面圆的水平半径(按比例) RadiusY 渐变的最外面圆的垂直半径(按比例) <Grid> <Rectangle Height="150" Width="150"> <Rectangle.Fill> <RadialGradientBrush GradientOrigin="0.75,0.25" Center="0.7,0.5" RadiusX="0.3" RadiusY="0.4"> <GradientStop Color="Yellow" Offset="0.0"/> <GradientStop Color="LightGreen" Offset="0.75"/> <GradientStop Color="Green" Offset="1.0" /> </RadialGradientBrush> </Rectangle.Fill> </Rectangle> </Grid>
-
图像画刷(ImageBrush),使用图像进行填充,ImageBrush 使用 ImageSource 绘制。
<Grid> <Rectangle Height="150" Width="150"> <Rectangle.Fill> <ImageBrush ImageSource="00.jpeg" /> </Rectangle.Fill> </Rectangle> </Grid>
-
绘图画刷(DrawingBrush),可以自定义形状,填充,边框, Drawing 可以包含形状、图像、文本和媒体。
常用属性 描述 Brush 设置填充画刷 Pen 设置填充画笔 Geometry 设置填充形状 <Grid> <Rectangle Height="100" Width="150"> <Rectangle.Fill> <DrawingBrush> <DrawingBrush.Drawing> <DrawingGroup> <DrawingGroup.Children> <GeometryDrawing> <!-- 绘制矩形 --> <GeometryDrawing.Geometry> <RectangleGeometry RadiusX="0.2" RadiusY="0.5" Rect="0.02,0.02,0.96,0.96"/> </GeometryDrawing.Geometry> <!-- 矩形填充 --> <GeometryDrawing.Brush> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="Yellow" Offset="0"/> <GradientStop Color="Blue" Offset="1"/> </LinearGradientBrush> </GeometryDrawing.Brush> <!-- 矩形边框 --> <GeometryDrawing.Pen> <Pen Thickness="0.02"> <Pen.Brush> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="AliceBlue" Offset="0"/> <GradientStop Color="Black" Offset="1"/> </LinearGradientBrush> </Pen.Brush> </Pen> </GeometryDrawing.Pen> </GeometryDrawing> <GeometryDrawing> <!-- 绘制矩形 --> <GeometryDrawing.Geometry> <RectangleGeometry RadiusX="0.2" RadiusY="0.5" Rect="0.02,0.02,0.5,0.6"/> </GeometryDrawing.Geometry> <!-- 矩形填充 --> <GeometryDrawing.Brush> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="Green" Offset="0"/> <GradientStop Color="Red" Offset="1"/> </LinearGradientBrush> </GeometryDrawing.Brush> <!-- 矩形边框 --> <GeometryDrawing.Pen> <Pen Thickness="0.02"> <Pen.Brush> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="AliceBlue" Offset="0"/> <GradientStop Color="Black" Offset="1"/> </LinearGradientBrush> </Pen.Brush> </Pen> </GeometryDrawing.Pen> </GeometryDrawing> </DrawingGroup.Children> </DrawingGroup> </DrawingBrush.Drawing> </DrawingBrush> </Rectangle.Fill> </Rectangle> </Grid>
-
视觉画刷(VisualBrush),使用 Visual 对象绘制,可以控件填充。