Freigeben über


Vorgehensweise: Hinzufügen eines Wasserzeichens zu einem Textfeld

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 erneut wiederhergestellt, wenn der Benutzer seine Eingabe entfernt. Siehe Abbildung unten.

Ein TextBox-Element mit einem Hintergrundbild

Anmerkung

Der Grund, warum ein Hintergrundbild in diesem Beispiel verwendet wird, anstatt einfach die Text-Eigenschaft von TextBoxzu bearbeiten, besteht darin, dass ein Hintergrundbild die Datenbindung nicht beeinträchtigt.

Beispiel

Der folgende XAML-Code 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 verarbeitet 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

Weitere Informationen