WPF 带输入提示的textbox

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在开发中经常会有样式需求,当控件处于激活时会有系统默认的激活颜色,如下图所示:
在这里插入图片描述
上面的输入框为非激活状态,当光标移入或者激活控件的时候边框会自动变成系统默认的蓝色,此代码中重新修改了控件模版取消了高亮蓝色问题。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值