Postupy: Přidání vodoznaku do textového pole
Následující příklad ukazuje, jak zlepšit použitelnost TextBox zobrazením vysvětlujícího obrázku na pozadí uvnitř TextBox, dokud uživatel nevloží text, v tomto okamžiku se obrázek odebere. Kromě toho se obrázek na pozadí obnoví znovu, pokud uživatel odebere svůj vstup. Viz obrázek níže.
Poznámka
Důvod, proč je v tomto příkladu použit obrázek na pozadí, namísto jednoduché manipulace s vlastností Text u TextBox, je ten, že použití obrázku na pozadí neovlivní svázání dat.
Příklad
Následující kód XAML ukazuje následující:
- Deklarování prostředku
watermark
Stáhněte si obrázek z GitHubu . - Nastavení vlastnosti
TextBox.Background
pro prostředky. - Nastavení události
TextBox.TextChanged
<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>
Následující kód zpracovává událost TextBox.TextChanged
:
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
Viz také
.NET Desktop feedback