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
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
In Windows 8.1, TextBox has a PlaceholderText property:
<TextBox
x:Name="UserName"
PlaceholderText="User Name"
/>
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.
In case you are using WPF, you are looking for a watermark, check out the following stackoverflow answer
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