我需要在wpf中将密码框设置为不可编辑。 我用过 IsEnabled = false
但它正在影响我的风格,因为这样的一些模糊效果...... 还有其他方法可以达到这个目的吗?
答案 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;
}
现在它会阻止你输入任何内容:)