占位符文本框Windows Phone 8

Edw*_*ony 1 c# wpf xaml windows-phone-8

我已经阅读了这个 将占位符文本添加到文本框中

问题是,占位符TextBox必须易于重用.使用XAML或Code.也许是这样的

<my:TextBoxPlaceholder Placeholder="this is the placeholder"/>
Run Code Online (Sandbox Code Playgroud)

要么

<TextBox Placeholder="this is the placeholder"
         Type="/*staticresources*/PlaceholderTextBox"/>
Run Code Online (Sandbox Code Playgroud)

这就是我所说的.(我从Instagram Beta获得的屏幕截图).

Imgur Imgur

如您所见,在第二张图片中,"添加注释"占位符位于TextBox的最顶层,它覆盖了条带线.占位符是顶部的图片还是TextBlock?

and*_*ubi 13

您可以使用Windows Phone Toolkit中PhoneTextBox控件.

它有一个Hint属性,允许您设置占位符:

<toolkit:PhoneTextBox Hint="Add a coment" Text={Binding ...} .../>
Run Code Online (Sandbox Code Playgroud)


Mar*_*und 7

MacGile对您提到的主题的第三条评论显示了一种使用特殊样式扩展普通TextBox的相当简单的方法.如果您在TextBox上应用此样式,则可以使用它,就像他说明的那样:

<TextBox Style="{StaticResource placeHolder}" 
         Tag="Name of customer" Width="150" Height="24"/>
Run Code Online (Sandbox Code Playgroud)

Tag属性是您输入占位符文本的位置.该样式旨在根据输入的文本更改颜色,并在用户编辑时返回全彩黑色.

实现目标的第二种方法是将TextBox放在网格中并在其上添加一个TextBlock,当TextBlock不为空(用户输入内容)时,您将隐藏它.样品:

<Grid>
   <TextBox x:Name="MyTextBox" />
   <TextBlock Text="enter name..." Foreground="#CCC" 
              Visibility="{Binding ElementName=MyTextBox, Path=Text, Converter={StaticResource StringLengthToVisibilityConverter}}" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

其中StringLengthToVisibilityConvertera IValueConverterVisibility.Visible在字符串参数为空时返回的.您可以将其转换为自定义控件或UserControl,它将以您需要的方式工作.