如何在Silverlight 4中设置PasswordBox
,以便在它为空时显示文本“请在此输入密码”在密码框内?< / p>
我希望文本显示在PasswordBox中,而光标在行的最开头闪烁。当用户开始键入时,文本应该消失,并且应显示默认密码字符。 当用户完全删除密码时,应再次显示该文本。
纯XAML可以实现吗?
如果没有,我也很欣赏一个带有一些事件处理程序和代码的解决方案。提前谢谢!
答案 0 :(得分:0)
尝试在文本框和密码框之间切换,例如在GotFocus,LostFocus
上答案 1 :(得分:0)
我现在实施了以下解决方案。它不是纯XAML,但我认为没关系。
在XAML中,我放了一个PasswordBox
,然后是TextBlock
,其中“输入密码”文本与PasswordBox重叠。在PasswordBox的事件处理程序中,TextBlock将变为不可见。
<PasswordBox x:Name="PasswordBox"
PasswordChanged="PasswordBox_PasswordChanged" />
<TextBlock x:Name="TextBlockEnterPassword" FontStyle="Italic"
Text="Enter your password here" IsHitTestVisible="False"/>
(将上述内容放在一个Grid
单元格中。)
在后面的代码中,添加事件处理程序:
private void PasswordBox_PasswordChanged( object sender, RoutedEventArgs e )
{
// If the user enters something in the passwordbox, hide
// the "Enter password" text; if the user erases the field,
// show the text.
if ( PasswordBox.Password.Length == 0 )
TextBlockEnterPassword.Visibility = Visibility.Visible;
else
TextBlockEnterPassword.Visibility = Visibility.Collapsed;
}