ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
~~~ 今天调试自己写的WPF的Behavior, 是关于TextBox只能输入数据或者小数点的。 ~~~ ~~~ 发现有个问题, 就是英文IME下字母等等都能过滤, 但是一旦切换到中文输入法, 就会发现在OnPreviewTextInput处理 时Textbox.Text已经得到中文输入的值,导致就算PreviewTextInput响应了,而且当前的中文也被过滤了,但是TextBox.Text已经有同样的中文存在, 表现出过滤失败。 ~~~ ~~~ ~~~ ~~~ 原因可能是在中文输入后TextBox第一次得到值TextInput没有响应,而第二次响应时就算不合法被过滤,但第一次的值已存在。 ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ 解决办法: ~~~ ~~~ 不使用TextBox的PreviewTextInput事件, 而是调用TextCompositionManager来重新注册AddPreviewTextInputStartHandler的处理。 如下: ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ //this.AssociatedObject.PreviewTextInput += new TextCompositionEventHandler(OnPreviewTextInput); TextCompositionManager.AddPreviewTextInputStartHandler(this.AssociatedObject, new TextCompositionEventHandler(OnPreviewTextInput)); ~~~