我需要在 wpf 中将密码框设为不可编辑。我用
IsEnabled = false
但这影响了我的风格,因此产生了一些模糊效果……还有其他方法可以实现吗?
我知道这已经两年了,但我有同样的需求并以这种方式解决了它:这两个属性的组合,都设置为 false,将防止在控件中输入/编辑,而不会影响您想要的样式:Focusable , IsHitTestVisible
您可以处理该PreviewTextInput
事件,防止用户输入文本。像这样:
xml:
<PasswordBox PreviewTextInput="HandleInput"/>
代码隐藏:
private void HandleInput(object sender, TextCompositionEventArgs e) {
e.Handled = true;
}
一种解决方案是制作自定义功能来模仿IsReadOnly
.
有几件事需要照顾 - 例如
clipboard pasting
也。
您将similar behavior
通过定义一些附加属性(例如IsPasswordReadOnly
或相同)来获得 - 这将解决所有需要的问题。
这是一个很好的开始示例——我认为它是否也适用于密码框——但我还没有尝试过,你必须自己测试一下。
您必须替换对TextBox
with的引用PasswordBox
,将其重命名为 IsReadOnly - 我认为其余部分可能相同。
而你使用它就像...
<PasswordBox my:AttachReadOnly.IsReadOnly="True" />
很简单。。
在 XML 中为 PreviewTextInput 设置事件处理程序,如下所示:
PreviewTextInput="PasswordBoxOnPreviewTextInput"
在该方法中:
private void PasswordBoxOnPreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (m_DisablePasswordBox)
e.Handled = true;
}
它现在会阻止您输入任何内容:)