Freigeben über


Gewusst wie: Hinzufügen eines Wasserzeichens zu einer TextBox

Im folgenden Beispiel wird gezeigt, wie Sie die Benutzerfreundlichkeit eines TextBox-Elements verbessern, indem Sie ein erläuterndes Hintergrundbild innerhalb des TextBox-Elements anzeigen. Wenn die Benutzer*innen beginnen Text einzugeben, wird das Bild entfernt. Darüber hinaus wird das Hintergrundbild wiederhergestellt, wenn Benutzer*innen ihre Eingabe entfernen. Dies wird aus der folgenden Abbildung ersichtlich.

A TextBox with a background image

Hinweis

In diesem Beispiel wird ein Hintergrundbild verwendet wird, und nicht einfach die Text-Eigenschaft von TextBox, da ein Hintergrundbild die Datenbindung nicht beeinträchtigt.

Beispiel

Das folgende XAML veranschaulicht Folgendes:

<Window x:Class="watermark.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <ImageBrush x:Key="watermark" ImageSource="textboxbackground.gif" AlignmentX="Left" Stretch="None" />
    </Window.Resources>
    <StackPanel>
        <TextBox Name="myTextBox" TextChanged="OnTextBoxTextChanged" Width="200" Background="{StaticResource watermark}" />
    </StackPanel>
</Window>

Der folgende Code behandelt das TextBox.TextChanged -Ereignis:

private void OnTextBoxTextChanged(object sender, TextChangedEventArgs e)
{
    if (sender is TextBox box)
    {
        if (string.IsNullOrEmpty(box.Text))
            box.Background = (ImageBrush)FindResource("watermark");
        else
            box.Background = null;
    }
}
Private Sub OnTextBoxTextChanged(sender As Object, e As TextChangedEventArgs)
    If TypeOf sender Is TextBox Then
        Dim box As TextBox = DirectCast(sender, TextBox)

        If String.IsNullOrEmpty(box.Text) Then
            box.Background = DirectCast(FindResource("watermark"), ImageBrush)
        Else
            box.Background = Nothing
        End If
    End If
End Sub

Siehe auch