[WPF]Watermask TextBox Style

来源:互联网 发布:java编写的小软件源码 编辑:程序博客网 时间:2024/05/16 17:29
前段时间,在一个项目中需要用到一个带水印的 TextBox
    <!-- TextBox 样式 -->    <Style TargetType="{x:Type TextBox}">        <Style.Resources>            <SolidColorBrush x:Key="WatermaskTextBoxWatermaskForeground" Color="#FF707070" />        </Style.Resources>        <Setter Property="SnapsToDevicePixels" Value="True"/>        <Setter Property="OverridesDefaultStyle" Value="True"/>        <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/>        <Setter Property="FocusVisualStyle" Value="{x:Null}"/>        <Setter Property="MinWidth" Value="120"/>        <Setter Property="MinHeight" Value="20"/>        <Setter Property="AllowDrop" Value="True"/>        <Setter Property="Foreground" Value="#FF000000"/>        <Setter Property="Background" Value="#FFFFFFFF"/>        <Setter Property="BorderBrush" Value="#FF707070"/>        <Setter Property="Template">            <Setter.Value>                <ControlTemplate TargetType="{x:Type TextBox}">                    <Border x:Name="Border" CornerRadius="2" Padding="2" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" >                        <Grid>                            <Label x:Name="TextPrompt" Content="{TemplateBinding Tag}" Focusable="False"  Foreground="{DynamicResource WatermaskTextBoxWatermaskForeground}" Visibility="Collapsed" Padding="0" VerticalContentAlignment="Center" Margin="2,0,0,0"/>                            <ScrollViewer Margin="0" x:Name="PART_ContentHost"/>                        </Grid>                    </Border>                    <ControlTemplate.Triggers>                        <Trigger Property="IsFocused" Value="True">                            <Setter Property="BorderBrush" TargetName="Border" Value="{DynamicResource TextBoxFocusBorderBrush}"/>                        </Trigger>                        <Trigger Property="IsEnabled" Value="False">                            <Setter TargetName="Border" Property="Background" Value="{DynamicResource TextBoxDisabledBackground}"/>                            <Setter TargetName="Border" Property="BorderBrush" Value="{DynamicResource TextBoxDisabledBorderBrush}"/>                            <Setter Property="Foreground" Value="{DynamicResource TextBoxDisabledForeground}"/>                        </Trigger>                        <MultiTrigger>                            <MultiTrigger.Conditions>                                <Condition Property="IsFocused" Value="False"/>                                <Condition Property="IsEnabled" Value="True"/>                                <Condition Property="Text" Value=""/>                            </MultiTrigger.Conditions>                            <Setter Property="Visibility" TargetName="TextPrompt" Value="Visible"/>                        </MultiTrigger>                        <MultiTrigger>                            <MultiTrigger.Conditions>                                <Condition Property="IsMouseOver" Value="True"/>                                <Condition Property="IsFocused" Value="False"/>                            </MultiTrigger.Conditions>                            <Setter Property="BorderBrush" TargetName="Border" Value="{DynamicResource TextBoxMouseOverBorderBrush}"/>                        </MultiTrigger>                    </ControlTemplate.Triggers>                </ControlTemplate>            </Setter.Value>        </Setter>    </Style>
原创粉丝点击