WPF 带输入提示的textbox
在WPF开发中经常会遇到需要输入提示的textbox,废话不多说直接上代码
代码片
.
// An highlighted block
<TextBox Name="userId" CaretBrush="White" Foreground="#ffffff" FontSize="16" BorderBrush="#FFA930" BorderThickness="1" Height="48" VerticalAlignment="Bottom" Margin="394,0,0,179" VerticalContentAlignment="Center">
<TextBox.Resources>
<VisualBrush x:Key="HelpBrush" TileMode="None" Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<Border Background="Black">
<TextBlock Opacity="0.4" Background="Transparent" FontSize="16" Foreground="White" Text="请输入用户名"/>
</Border>
</VisualBrush.Visual>
</VisualBrush>
</TextBox.Resources>
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Background" Value="Transparent"></Setter>
<Style.Triggers>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource HelpBrush}"/>
</Trigger>
<Trigger Property="Text" Value="">
<Setter Property="Background" Value="{StaticResource HelpBrush}"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
<TextBox.Template>
<ControlTemplate TargetType="{x:Type TextBox}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ScrollViewer x:Name="PART_ContentHost" Focusable="False" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="BorderBrush" TargetName="border" Value="#FFA930"/>
<Setter Property="BorderThickness" TargetName="border" Value="1"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" TargetName="border" Value="0.56"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</TextBox.Template>
</TextBox>
这里需要说明下,textbox在开发中经常会有样式需求,当控件处于激活时会有系统默认的激活颜色,如下图所示:
上面的输入框为非激活状态,当光标移入或者激活控件的时候边框会自动变成系统默认的蓝色,此代码中重新修改了控件模版取消了高亮蓝色问题。