Как создать текстовое поле для ввода пароля¶
В этом примере показано, как замаскировать вводимые пользователем данные символом пароля (например, '*') и позволяют пользователю раскрывать и скрывать введенный пароль с помощью кнопки.
Класс TextEditor
в настоящее время не содержит свойства PasswordChar
. Однако вы можете включить режим пароля для внутреннего текстового поля (контрол TextBox
), которое встроено в контрол TextEditor
и обеспечивает функциональность редактирования текста.
В следующем примере создается поведение PasswordBoxBehavior, которое активирует режим пароля для внутреннего текстового поля текстового редактора (TextBox
). Класс PasswordBoxBehavior предоставляет свойства PasswordChar
и ShowRevealButton
для указания символа маски пароля и видимости кнопки раскрытия пароля.
Вам необходимо добавить пакет Avalonia.Xaml.Behaviors
NuGet в свой проект, чтобы использовать behaviors.
namespace DemoCenter.Views;
public class PasswordBoxBehavior : Avalonia.Xaml.Interactivity.Behavior<TextEditor>
{
private const string revealButtonClassName = "revealPasswordButton";
public char PasswordChar { get; set; } = '*';
public bool ShowRevealButton { get; set; } = true;
protected override void OnAttached()
{
base.OnAttached();
if (AssociatedObject != null)
AssociatedObject.Loaded += OnLoaded;
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
var realEditor = AssociatedObject.FindVisualChild<TextBox>();
if (realEditor == null)
return;
realEditor.PasswordChar = PasswordChar;
if (ShowRevealButton)
realEditor.Classes.Add(revealButtonClassName);
}
protected override void OnDetaching()
{
base.OnDetaching();
if (AssociatedObject != null)
AssociatedObject.Loaded -= OnLoaded;
}
}
Прикрепите поведение PasswordBoxBehavior к контролу TextEditor
в вашем проекте следующим образом:
xmlns:view="using:DemoCenter.Views"
<mxe:TextEditor>
<Interaction.Behaviors>
<view:PasswordBoxBehavior />
</Interaction.Behaviors>
</mxe:TextEditor>
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.