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

时间:2013-04-12 12:56:41

标签: c# .net wpf

我需要在wpf中将密码框设置为不可编辑。 我用过    IsEnabled = false

但它正在影响我的风格,因为这样的一些模糊效果...... 还有其他方法可以达到这个目的吗?

4 个答案:

答案 0 :(得分:3)

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

的Xaml:

<PasswordBox PreviewTextInput="HandleInput"/>

代码隐藏:

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

答案 1 :(得分:1)

一种解决方案是制作模仿IsReadOnly的自定义功能。

  

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

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

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

Readonly textbox for WPF with visible cursor (.NET 3.5)

您必须将TextBox的引用替换为PasswordBox,将其重命名为IsReadOnly - 我认为其余内容可能会相同。

你用它就像......

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

答案 2 :(得分:1)

我知道这已经有两年了,但我有同样的需求并以这种方式解决了它: 这两个属性的组合(均设置为false)将阻止控件中的输入/编辑,而不会影响您所需的样式: 可聚焦,IsHitTestVisible

答案 3 :(得分:0)

非常简单..

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

    PreviewTextInput="PasswordBoxOnPreviewTextInput"

在该方法中:

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

现在它会阻止你输入任何内容:)