wpf 输入框水印提示 (VisualBrush 例子)

file

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>
上一篇
下一篇