Czy ktoś wie, w jaki sposób można łatwo wykryć, czy edytor IME systemu Windows jest aktywny w framworkach Silverlight. Pozwól mi wyjaśnić scenariusz, który powoduje mi problemy:Wykrywanie, czy edytor IME (Input Method Editor) jest aktywny w Silverlight
Mam hit problem, w którym przy użyciu chińskiego (uproszczony, Chiny) Microsoft Pinyin powoduje wyjątek CLR. Scenariusz dotyczy sytuacji, w której TextBox obsługuje zdarzenie TextChanged. Na przykład:
- TextBox nie powinien akceptować znaków, ale tylko cyfry. Aby to osiągnąć, obsługuje on zdarzenie TextChanged iw tym przypadku obsługuje dane wejściowe, odwracając właściwość Text do ostatniej poprawnej litery wejściowej po znaku. W tym scenariuszu, jeśli zostanie użyty IME (chiński (uproszczony, chiński) Microsoft Pinyin), zostanie zgłoszony kod FatalExecutionEngineError.
W WPF można przezwyciężyć ten problem, nie odwracając tekstu w zdarzeniu TextChanged za pomocą InputMethod.Current. ImeState, aby sprawdzić, czy edytor IME jest aktywny. Niestety nie jest to dostępne w środowisku Silverlight, dlatego publikuję to pytanie.
Obecnie jedyne, co znalazłem, to to, że mogłem ustawić właściwość IsInputMethodEnabled klasy InputMethod na kontrolkę TextBox w celu wyłączenia wszystkich wejść IME, ale to oczywiście nie tylko wyłącza nieprawidłowe wejście, ale także prawidłowe.
Ktoś ma pomysły, jak mogę wykryć, czy edytor IME jest używany/aktywny na platformie Silverlight? Dzięki.