Silverlight PasswordBox里面显示“请输入密码”

时间:2011-08-17 14:38:23

标签: silverlight xaml silverlight-4.0 passwordbox

如何在Silverlight 4中设置PasswordBox,以便在它为空时显示文本“请在此输入密码密码框内?< / p>

我希望文本显示在PasswordBox中,而光标在行的最开头闪烁。当用户开始键入时,文本应该消失,并且应显示默认密码字符。 当用户完全删除密码时,应再次显示该文本。

纯XAML可以实现吗?

如果没有,我也很欣赏一个带有一些事件处理程序和代码的解决方案。提前谢谢!

2 个答案:

答案 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;
}