問題源於前不久做的SL應用,開發是在SL4下開發的,由於完成后SL5也出來了,據說性能有較大提高,就把客戶端升級到了SL5。經過簡單的測試后,沒發現什么異常。可是過了兩天,客戶打電話說:中文不能輸入了,輸入法切換后還是英文,或根本就切換不了。可開發機器上一切正常啊!
程序用了自己寫的控件,其中用到了Popup控件,Popup中的ListBox控件作為一個下拉列表供用戶選擇。 在win7上測試發現,當選中一項,Popup隱藏后,將焦點移到下一個TextBox控件,原來好好的輸入法變為了這樣:
XP和2003下測試,只能發現語言欄變短了!並且不管用什么輸入法都一樣不能輸入中文!
Google搜索后發現,ContextMenu控件也有這樣的問題,當菜單顯示時,也會出現上面的現象!由此推斷SL對輸入法的控制是這樣的:如果當前獲得焦點的控件不能輸入,就禁用中文輸入法!
於是將自定義控件中的Focus()語句注釋掉,運行正常了,難道是Focus到了一個無效的控件上了!可是不知道SL4為什么正常呢?
進一步修改代碼:Popup隱藏后,再調用Focus(),這樣輸入法正常了!
看來用Silverlight開發還是會遇到不少麻煩的。