3

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

但这影响了我的风格,因此产生了一些模糊效果……还有其他方法可以实现吗?

4

4 回答 4

5

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

于 2015-07-14T22:57:04.373 回答
3

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

xml:

<PasswordBox PreviewTextInput="HandleInput"/>

代码隐藏:

private void HandleInput(object sender, TextCompositionEventArgs e) {
  e.Handled = true;
}
于 2013-04-12T13:09:35.653 回答
2

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

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

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

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

带有可见光标的 WPF 的只读文本框 (.NET 3.5)

您必须替换对TextBoxwith的引用PasswordBox,将其重命名为 IsReadOnly - 我认为其余部分可能相同。

而你使用它就像...

<PasswordBox my:AttachReadOnly.IsReadOnly="True" />
于 2013-04-12T13:14:32.623 回答
0

很简单。。

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

    PreviewTextInput="PasswordBoxOnPreviewTextInput"

在该方法中:

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

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

于 2015-06-25T10:12:14.843 回答