Place holder or watermark in TextBox windows 8

2019-02-16 07:36发布

问题:

I want to show a placeholder text in TextBox when user hasn't typed anything and TextBox is idle.

In Andriod it can be done using android:hint="some Text"
In iPhone it can be done as textFild.placeholder = "some text";

How can I do it in windows 8 metro apps?

Thanks

回答1:

Edit for windows-8.1 they have introduced a new property

<TextBox x:Name="UserName" PlaceholderText="User Name"/>

Please see Sergey Aldoukhov's answer


For me this is the working solution that I got.
If any one has better solution please answer.

private void OnTestTextBoxGotFocus(object sender, RoutedEventArgs e)
{
    if (testTextBox.Text.Equals("Type here...", StringComparison.OrdinalIgnoreCase))
    {
        testTextBox.Text = string.Empty;
    }  
}

private void OnTestTextBoxLostFocus(object sender, RoutedEventArgs e)
{
    if (string.IsNullOrEmpty(testTextBox.Text))
    {
        testTextBox.Text = "Type here...";
    }
}


MS also do the same check the example here.

P.S. I have created a custom control for TextBox you can download it from here



回答2:

In Windows 8.1, TextBox has a PlaceholderText property:

<TextBox
    x:Name="UserName"
    PlaceholderText="User Name"
    />


回答3:

The WinRT Xaml Toolkit has a WatermarkTextbox Control: http://winrtxamltoolkit.codeplex.com/

You can get it via NuGet as well, it comes with several other usefull Controls.

you can use it by referncing the toolkit in your Page´s property´s:

xmlns:xtk="using:WinRTXamlToolkit.Controls"

And the just access the WaterMarkTextBox like this:

<xtk:WatermarkTextBox WatermarkText="some text" />

Edit.:

Callisto offers a watermark TextBox too: https://github.com/timheuer/callisto

Its just not mentioned in the readme yet.



回答4:

In case you are using WPF, you are looking for a watermark, check out the following stackoverflow answer



回答5:

What you can do is you can set a default text and clear it using tapped event of textbox or you can use the watermark text box see here