WPF 实现文本框textbox文字提示

  1. 自定义TextBox样式提示信息
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <!--  TextBox样式设置  -->
    <Style
        x:Key="TextBoxSearchStyle"
        BasedOn="{x:Null}"
        TargetType="{x:Type TextBox}">
        <!--  x:Key="QueryTextBoxStyle"此属性是必须的,Style通过Key来绑定  -->
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TextBox">
                    <!--  定义一个Border实现TextBox的边框样式的改变  -->
                    <Border
                        x:Name="border"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="1"
                        CornerRadius="3"
                        SnapsToDevicePixels="True">
                        <!--  定义一个Grid把TextBox分为两列  -->
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition />
                                <ColumnDefinition Width="auto" />
                            </Grid.ColumnDefinitions>
                            <!--  在第一列定义一个TextBlock,用来实现水印  -->
                            <TextBlock
                                Name="markText"
                                Margin="5"
                                HorizontalAlignment="Left"
                                VerticalAlignment="Center"
                                FontSize="12"
                                Foreground="DarkGray"
                                Text="{TemplateBinding Tag}"
                                Visibility="Collapsed" />
                            <!--  第二列定义一个TextBlock,用来放图标  -->
                            <TextBlock
                                Grid.Column="1"
                                Padding="0,5,3,5"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"
                                <!--引用iconfont图标集-->                                FontFamily="pack://application:,,,/Skin;component/Resources/#iconfont"
                                FontSize="20"
                                Foreground="DarkGray"
                                Text="&#xe659;" />
                            <!--<Image
                                Grid.Column="1"
                                Margin="0,4,3,4"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center"
                                Source="/Skin;component/Resources/search.png" />-->

                            <!--  ScrollViewer此标签必须有,不然TextBox里的内容无法显示  -->
                            <ScrollViewer
                                x:Name="PART_ContentHost"
                                Grid.Column="0"
                                VerticalAlignment="Center"
                                Focusable="False"
                                HorizontalScrollBarVisibility="Hidden"
                                VerticalScrollBarVisibility="Hidden" />
                        </Grid>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter TargetName="border" Property="Opacity" Value="0.56" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="border" Property="BorderBrush" Value="#FF7EB4EA" />
                        </Trigger>
                        <Trigger Property="IsKeyboardFocused" Value="True">
                            <Setter TargetName="border" Property="BorderBrush" Value="#FF569DE5" />
                        </Trigger>
                        <!--  DataTrigger实现当用户输入内容时,显示输入的内容,当用户清空时,显示水印  -->
                        <DataTrigger Binding="{Binding Path=Text, RelativeSource={RelativeSource Mode=Self}}" Value="">
                            <Setter TargetName="markText" Property="Visibility" Value="Visible" />
                        </DataTrigger>
                        <Trigger Property="IsFocused" Value="true">
                            <Setter Property="CaretBrush" Value="White" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="Foreground" Value="White" />
    </Style>

</ResourceDictionary>
  1. 使用自定义TextBox
 <TextBox
     x:Name="TextBox_Search"
     Width="150"
     Margin="0,2,0,2"
     FlowDirection="LeftToRight"
     Style="{DynamicResource TextBoxSearchStyle}"
     Tag="搜索料号"
     Visibility="{Binding SearchVisibility}">
     <TextBox.InputBindings>
         <KeyBinding
             Key="Enter"
             Command="{Binding SearchArchivesCommand}"
             CommandParameter="{Binding Text, ElementName=TextBox_Search}" />
     </TextBox.InputBindings>
 </TextBox>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值