今天一个同事突然站起来给了我一个眼神,我就知道没啥好事。果然给我指出了一些bug,其中一个是这样的,密码输入框只能输入一个字符,再输入就输入不了。
这种降档次的错误咱也能出,果断夺过键盘,疯狂输入一番,还真是这情况,顿觉空气凝固了一下。回到自己的工位上测试一番,一切正常,没毛病。然后就开始查找代码,
查了一番后,并没有什么问题,思前想后,发觉有可能是输入法的问题,咱一般都使用的搜狗输入法,刚那同事好像不是,然后切换为win10自带的输入法输入,在中文输入法下
问题重现,英文输入法下也是正常的。发现win10自带的中文输入法输入是这样的
是显示在上面的时候就已经触发了输入,确定输入后,又会把之前的去除掉,这个逻辑不符合咱做的密码输入框的逻辑。
然后查找禁用输入法的方式,找了很多方法,但都不能处理该问题。最后找到一种非常非常简单的方法,就一句代码即可,费了我大半天真是惭愧。这里做个记录,也做个分享,希望也能帮助到遇到相似问题的人。
<styles:ExTextBox IsPasswordBox="True" InputMethod.IsInputMethodEnabled="False" PasswordStr="{Binding Pwd,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" WaterRemark="请输入密码"/>
其中关键一句就是InputMethod.IsInputMethodEnabled="False"。关闭输入法。完美解决win10自带输入法在中文输入下的问题。