首页 > 解决方案 > 如何在 UWP 中将 PasswordBox 设为只读?

问题描述

我正在制作一个 PasswordBox,当光标悬停在 PasswordBox 上时,它会公开特定帐户的密码。但是,这纯粹是出于查看目的,我不希望用户能够编辑密码。

我怎样才能像使用文本框一样使 PasswordBox 只读?我知道它没有要设置的相同属性,但是 UWP 中的 PasswordBoxes 是否可以解决?

这是我到目前为止所拥有的:View.xaml

<PasswordBox x:Name="Password" Password="{x:Bind Acct.Password}" CornerRadius="5" PointerEntered="Password_PointerEntered"
     PointerExited="Password_PointerExited" VerticalAlignment="Center" FontSize="20" Width="175"  />

查看.xaml.cs

        private void Password_PointerEntered(object sender, PointerRoutedEventArgs e)
        {
            var pb = sender as PasswordBox;
            pb.PasswordRevealMode = PasswordRevealMode.Visible;
        }

        private void Password_PointerExited(object sender, PointerRoutedEventArgs e)
        {
            var pb = sender as PasswordBox;
            pb.PasswordRevealMode = PasswordRevealMode.Hidden;
        }

到目前为止,我所尝试的尝试是让 PasswordBox 在通过单击进行编辑获得焦点后失去焦点,但在那里没有太多运气。有没有办法在事件发生时取消它们?

任何帮助是极大的赞赏!

标签: c#xamluwp

解决方案


您可以对PasswordChanged事件做出反应并使用它将您的属性设置回PasswordBox.Password其初始值,例如:

private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e) {
    Password.Password = "cannot-be-changed password";
}

你还可以让你对焦点和标记PasswordBox免疫。这不会阻止用户修改密码,但会指示他不支持此操作。不过,这可能会干扰您的活动。IsHitTestVisible="False""Focusable="False"PointerEnteredPointerExited


推荐阅读