Trong ứng dụng MVVM Silverlight 4 của tôi, tôi có thể chuyển đổi ngôn ngữ trong thời gian chạy:Silverlight ValidatesOnException nội địa hóa nhắn mặc định
public void SetLanguage(string language)
{
var culture = new CultureInfo(language);
Thread.CurrentThread.CurrentUICulture = culture;
Thread.CurrentThread.CurrentCulture = culture;
// ...
}
Đối với các đầu vào, tôi chỉ cần thêm "ValidatesOnException = true" trong trường hợp của các vấn đề chuyển đổi và nó làm việc làm. Tuy nhiên, thông báo ngoại lệ mặc định là trong văn hóa của hệ điều hành của tôi và không phải trong một hệ điều hành được chọn thủ công.
Trong chủ đề này trên exception message localization ý tưởng là thay đổi CurrentCulture và CurrentUICulture, mà tôi đã làm. Vì vậy, tôi là loại bị mắc kẹt.
Tôi có thể làm gì?
Cảm ơn :)
Edit: tôi đã cố gắng sử dụng một bộ chuyển đổi tùy chỉnh với một ngoại lệ tùy chỉnh trong phương pháp convertback để xác nhận đầu vào của người dùng. Vấn đề, một ngoại lệ trong một phương thức chuyển đổi là không bị bắt bởi validatesOnException, nó phá vỡ ứng dụng.
Chỉnh sửa 2: để làm rõ -> nếu tôi có thuộc tính thập phân được liên kết với hộp văn bản và tôi nhập "blabla" vào hộp văn bản này, tôi muốn thấy rằng có sự cố và tôi muốn thư ở đó miền địa phương thời gian chạy chứ không phải ngôn ngữ OS. Tôi không thể đưa ra một ngoại lệ trong setter tài sản của tôi bởi vì tôi không bao giờ đạt được điều đó, trình biến đổi mặc định làm tăng ngoại lệ của riêng nó trước đó.
Tôi hy vọng nó rõ ràng. Nếu tôi có thể giúp bạn để giúp tôi, xin đừng ngần ngại :)
tôi không muốn đặt ngôn ngữ trong hàm tạo, tôi muốn có thể thay đổi nó khi chạy. Điều này không áp dụng, this.language là tập hợp riêng tư. –
Chỉ vì nó nằm trong hàm tạo không có nghĩa là nó không thể không chạy được.Sử dụng một constructor parameterized và bao gồm các logic tương tự như phương pháp SetLanguage bạn đã sử dụng –