Có ai biết cách tôi có thể dễ dàng phát hiện xem IME của Windows OS (Trình soạn thảo phương thức nhập) có hoạt động trong khung công tác Silverlight hay không. Hãy để tôi giải thích kịch bản gây ra sự cố cho tôi:Phát hiện xem IME (Trình soạn thảo phương thức nhập liệu) có đang hoạt động trong Silverlight
Tôi đã gặp vấn đề khi sử dụng tiếng Việt bính âm (Trung Quốc, Giản thể) của Microsoft gây ra ngoại lệ CLR. Kịch bản là khi một TextBox đang xử lý sự kiện TextChanged của nó. Ví dụ:
- Hộp văn bản không được chấp nhận ký tự nhưng chỉ có số. Để đạt được điều đó, nó đang xử lý sự kiện TextChanged của nó và trong trường hợp đó nó xử lý đầu vào bằng cách đảo ngược thuộc tính Text của nó thành ký tự đầu vào chính xác cuối cùng theo ký tự. Trong trường hợp này, nếu IME (tiếng Trung Quốc (Giản thể, Trung Quốc) IME của Việt Nam được sử dụng, một số FatalExecutionEngineError sẽ bị ném.
Trong WPF, có thể khắc phục sự cố này bằng cách không đảo ngược Văn bản trong sự kiện TextChanged bằng cách sử dụng InputMethod.Current. ImeState để kiểm tra xem IME có đang hoạt động hay không. Thật không may, điều này không có sẵn trong khung công tác Silverlight, đó là lý do tại sao tôi đăng câu hỏi này.
Hiện tại điều duy nhất tôi tìm thấy là tôi có thể đặt thuộc tính IsInputMethodEnabled của lớp InputMethod vào điều khiển TextBox để vô hiệu hóa tất cả đầu vào IME nhưng điều này tất nhiên sẽ không chỉ vô hiệu hóa đầu vào không chính xác mà còn đúng.
Bất cứ ai cũng có bất kỳ ý tưởng nào về cách tôi có thể phát hiện nếu IME được sử dụng/hoạt động trong nền tảng Silverlight? Cảm ơn.