WPF与中文输入法兼容性问题的解决方案

问题

我在使用WPF进行编程的时候,发现的一个最大问题就是WPF与中文输入法的兼容性问题。编程

出现的问题大概分为两种:框架

  1. 程序崩溃;
  2. 没法切换输入法。

在笔者的环境中并未遇到过崩溃的状况,只是后一种状况。但我想这两种状况的缘由应该同样。布局

具体的表现为:在WPF中的Textbox控件中输入汉字的时候,咱们须要先切换输入法。切换以后状态栏显示切换成功,而开始键入拼音的时候却发现直接将拼音输入了Textbox框中,情形好似并未切换成功。性能

并且更为棘手的是,这种状况并非绝对的,重启程序和屡次切换输入法均可能会变为正常。spa

个人环境为Win10 + VS2012 + WPF4.5 + QQ拼音输入法5.1code

解决方案

因为这个问题仅仅存在于中文输入环境中,外国人应该没有此问题,所以在Stack Overflow并未找到解决方案。orm

我在遇到这个问题后晾了很久都未解决,后来看到WPF中有个WindowsFormsHost控件,也就是WinForm宿主。所以我想,既然WinForm中不存在这个问题,那么把WinFormTextbox经过此宿主来代替WPFTextbox是否能解决这个问题呢?blog

通过尝试,发现确实能够。具体步骤为:图片

1、在窗口布局中加入一个WindowsFormsHost控件,设置Name(此处为host);class

2、用代码在host中加入一个WinFormTextbox

host.Child = new System.Windows.Forms.TextBox();

不足

固然这种方案并非完美的,好比如下几点:

性能、外观不足

WPF相比WinForm的一个最大好处是界面更绚丽和流畅。使用这种方案则失去了这种好处,好在Textbox通常并不须要背景图片或者半透明之类的特效,所以此处影响不大。

可移植性

因为此方案混合了两种GUI框架,所以没法用于仅支持WPF的环境中。

相关文章
相关标签/搜索