Silverlight PasswordBox с надписью «Пожалуйста, введите пароль здесь» внутри - PullRequest
0 голосов
/ 17 августа 2011

Как настроить PasswordBox в Silverlight 4, чтобы, когда он пуст, он отображал текст " Пожалуйста, введите пароль здесь " внутри PasswordBox?

Я хочу, чтобы текст отображался в PasswordBox, когда курсор мигает в самом начале строки. Когда пользователь начинает печатать, текст должен исчезнуть, и должны отображаться символы пароля по умолчанию. Когда пользователь полностью удалит пароль, текст должен появиться снова.

Возможно ли это с чистым XAML?

Если нет, я также был бы признателен за решение с некоторыми обработчиками событий и кодом. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 08 ноября 2011

Я сейчас реализовал следующее решение. Это не чистый 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;
}
0 голосов
/ 07 ноября 2011

Попробуйте переключиться между текстовым полем и паролем, например, на GotFocus, LostFocus

...