XAML
<TextBox
x:Class="WpfDemoApp.TipTextBoxCtrl.TipTextBoxControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name="Root"
VerticalAlignment="Center" VerticalContentAlignment="Center"
d:DesignHeight="300" d:DesignWidth="300" BorderThickness="0"
mc:Ignorable="d">
<TextBox.Background>
<!-- 设置 Background 为 VisualBrush 显示提示内容 -->
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<Grid>
<Border
Width="{Binding ElementName=Root, Path=ActualWidth}"
Height="{Binding ElementName=Root, Path=ActualHeight}"
Background=" White" CornerRadius="5">
<TextBlock
Margin="1"
HorizontalAlignment="{Binding ElementName=Root, Path=HorizontalContentAlignment}"
VerticalAlignment="{Binding ElementName=Root, Path=VerticalContentAlignment}"
FontFamily="{Binding ElementName=Root, Path=FontFamily}"
FontSize="{Binding ElementName=Root, Path=FontSize}"
Text="{Binding ElementName=Root, Path=TipText}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Opacity" Value="0" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=Root, Path=Text}" Value="">
<Setter Property="Opacity" Value=".3" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Border>
</Grid>
</VisualBrush.Visual>
</VisualBrush>
</TextBox.Background>
</TextBox>