This article has been localized into Russian by the community.
Элемент PasswordBox
Для редактирования обыкновенного текста в WPF мы можем использовать элемент TextBox, но что насчет паролей? Этот функционал очень похож на описанный выше, но мы хотим, чтобы WPF отображал вместо символов пароля специальные символы, для того, чтобы обезопасить пользователя от кражи пароля. Для этой цели в WPF был введен элемент PasswordBox, который так же прост в использовании как TextBox. Позвольте мне показать это на примере:
<Window x:Class="WpfTutorialSamples.Basic_controls.PasswordBoxSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="PasswordBoxSample" Height="160" Width="300">
<StackPanel Margin="10">
<Label>Text:</Label>
<TextBox />
<Label>Password:</Label>
<PasswordBox />
</StackPanel>
</Window>
На скриншоте видно, что я ввел одинаковый текст в два текстовых поля, но в элементе PasswordBox символы были автоматически заменены точками. Вы можете изменить точки на любой символ, используя свойство PasswordChar:
<PasswordBox PasswordChar="X" />
В этом случае, символ 'X' будет использован вместо точек. Если Вы хотите управлять длиной пароля - можете воспользоваться свойством MaxLength:
<PasswordBox MaxLength="6" />
Я использовал два этих свойства в примере ниже:
<Window x:Class="WpfTutorialSamples.Basic_controls.PasswordBoxSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="PasswordBoxSample" Height="160" Width="300">
<StackPanel Margin="10">
<Label>Text:</Label>
<TextBox />
<Label>Password:</Label>
<PasswordBox MaxLength="6" PasswordChar="X" />
</StackPanel>
</Window>
Обратите внимание, что теперь символы пароля заменены на 'X' и ввести можно только пароль из 6 символов.
PasswordBox и связывание
В случае, когда Вам нужно получить пароль из PasswordBox, можете использовать свойство Password из CodeBehind. Однако, из соображений безопасности, Password не реализовано как свойство зависимости, иными словами, Вы не можете использовать по отношению к нему привязку.
Как уже было сказано, Вы можете получить пароль из CodeBehind, но, если Вы хотите реализовать это в рамках MVVM, либо просто очень любите связывание данных - был придуман обходной путь. Можете больше прочитать на эту тему здесь: http://blog.functionalfun.net/2008/06/wpf-passwordbox-and-data-binding.html