<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="14"
Foreground="DarkGray"
Text="{TemplateBinding Tag}"
Visibility="Collapsed" />
<!-- 第二列定义一个TextBlock,用来放图标 -->
<TextBlock
Grid.Column="1"
Padding="0,5,3,5"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="pack://application:,,,/JieJun.Skin;component/Resources/#iconfont"
FontSize="20"
Foreground="DarkGray"
Text="" />
<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>
WPF TextBox搜索样式设置
于 2024-10-09 08:32:45 首次发布