Qualcuno sa come è possibile rilevare facilmente se IME di Windows OS (Input Method Editor) è attivo nel framwork di Silverlight. Lasciatemi spiegare lo scenario che mi sta causando problemi:Rilevare se IME (Input Method Editor) è attivo in Silverlight
Ho riscontrato un problema in cui l'utilizzo di un Pinyin Microsoft (semplificato, cinese) Microsoft causa un'eccezione CLR. Lo scenario è quando un TextBox sta gestendo il suo evento TextChanged. Ad esempio:
- Un TextBox non deve accettare caratteri ma solo numeri. Per riuscirci sta gestendo il suo evento TextChanged e in quel caso gestisce l'input invertendo la sua proprietà Text all'ultimo carattere di input corretto per carattere. In questo scenario se viene utilizzato un IME (cinese (semplificato, Cina) Microsoft Pinyin) viene emesso un valore FatalExecutionEngineError.
In WPF è possibile risolvere questo problema non invertendo il testo nell'evento TextChanged utilizzando InputMethod.Current. ImeState per verificare se un IME è attivo. Purtroppo questo non è disponibile nel framework Silverlight ed è per questo che sto postando questa domanda.
Attualmente l'unica cosa che ho trovato è che ho potuto impostare la proprietà IsInputMethodEnabled della classe InputMethod al controllo TextBox per disabilitare tutti gli input IME, ma questo naturalmente non solo disabilitare l'ingresso errato, ma anche quella corretta.
Qualcuno ha qualche idea su come rilevare se un IME è utilizzato/attivo nella piattaforma Silverlight? Grazie.