c# - 如何在 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 在通过单击进行编辑获得焦点后失去焦点,但在那里没有太多运气。有没有办法在事件发生时取消它们?
任何帮助是极大的赞赏!
解决方案
您可以对PasswordChanged
事件做出反应并使用它将您的属性设置回PasswordBox.Password
其初始值,例如:
private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e) {
Password.Password = "cannot-be-changed password";
}
你还可以让你对焦点和标记PasswordBox
免疫。这不会阻止用户修改密码,但会指示他不支持此操作。不过,这可能会干扰您的活动。IsHitTestVisible="False"
"Focusable="False"
PointerEntered
PointerExited
推荐阅读
- git - 创建拉取请求后,Jenkins 管道脚本将持续运行
- cortana - cortana 是用什么语言编写的?
- xml - 如何将xml加载到draw.io图中?
- php - POST请求的PHP cURL CURLAUTH_NEGOTIATE问题
- google-apps-script - 您可以在 Google 表格中对列(水平)进行排序吗?
- c# - 如何在实体框架中使用两个模型类进行连接
- google-apps-script - 使用中间有空格的getNotes?
- c - SIG_IGN 关于 SIGFPE、SIGILL、SIGSEGV 的未定义行为规范是否多余?
- mysql - 计算按国家分组的一列中的比率
- c++ - 用大 O 表示法表示的 mandelbrot 集的时间复杂度