如何使密码框在wpf中不可编辑

本文关键字:编辑 wpf 何使 密码 | 更新日期: 2023-09-27 18:08:45

我需要使密码框在wpf中不可编辑。我使用了
IsEnabled = false

但是它影响了我的风格,一些模糊效果出现了。还有其他方法吗?

如何使密码框在wpf中不可编辑

我知道这是两年前的事了,但我有同样的需求,并以这种方式解决了它:这两个属性的组合,都设置为false,将阻止在控件中输入/编辑,而不会影响你想要的样式:Focusable, IsHitTestVisible

您可以处理PreviewTextInput事件,阻止用户输入文本。像这样:

Xaml:

<PasswordBox PreviewTextInput="HandleInput"/>
后台代码:

private void HandleInput(object sender, TextCompositionEventArgs e) {
  e.Handled = true;
}

一个解决方案是创建一个自定义功能来模拟IsReadOnly

有几件事要照顾-例如clipboard pasting

通过定义一些附加属性(例如IsPasswordReadOnly或相同),您将获得similar behavior -这将解决所有需要的问题。

这是一个很好的开始示例-如果我认为它也可以用于密码框-但我还没有尝试过,你必须自己测试。

只读文本框,适用于具有可见光标的WPF。. NET 3.5)

你必须用PasswordBox替换TextBox的引用,将其重命名为IsReadOnly -我认为其余的可能工作相同。

你用它就像…

<PasswordBox my:AttachReadOnly.IsReadOnly="True" />

非常简单。

在XML中为PreviewTextInput设置一个事件处理程序,如下所示:

    PreviewTextInput="PasswordBoxOnPreviewTextInput"

在这个方法中:

    private void PasswordBoxOnPreviewTextInput(object sender, TextCompositionEventArgs e)
    {
        if (m_DisablePasswordBox)
            e.Handled = true;
    }

它现在会阻止你输入任何东西:)