2011-11-16 25 views
5

Tôi đã được gặp một số vui vẻ với bindings TextBlock trong Silverlight 4.
Tôi có tình huống sau đây:Lỗi hoặc tính năng trong TextBlock trong Silverlight 4?

<TextBlock Text="{Binding Date, StringFormat=g}" /> 
<TextBlock> 
    <Run Text="{Binding Date, StringFormat=g}"/> 
<TextBlock> 

đâu Date là một loại tài sản của System.DateTime.
Tôi chưa thay đổi văn hóa hiện tại của ứng dụng.

Văn hóa máy của tôi là Bulgaria (bg-BG). Ví dụ:

TextBlock 1: 2011/11/16 12:49
TextBlock 2: 2011/11/16 г. 12:49 ч.

Điều thú vị là ngày TextBlock định dạng ngày và giờ bằng văn bản vi-en (hoặc văn bản mặc định bất biến) trong khi văn bản thứ hai sử dụng văn hóa bg-BG. Thing nhận được thậm chí người lạ kể từ MSDN documentation cho Silverlight TextBlock kiểm soát nói:

Nếu InlineCollection được tạo ra từ XAML dưới dạng văn bản bên trong của một yếu tố đối tượng TextBlock, hoặc nếu nó được tạo ra bằng cách thiết lập thuộc tính văn bản, InlineCollection chứa một Run duy nhất chứa văn bản đó.

Tôi có thiếu gì đó ở đây hoặc nó có thể được coi là lỗi trong Silverlight 4?

+1

Strange thực sự. Bạn có nhận thấy thuộc tính Văn bản của lớp Khởi động không phải là một DependencyProperty không? Tôi tự hỏi làm thế nào các ràng buộc hoạt động trong tình huống này. Tôi đã thử đặt một bộ chuyển đổi trong cả hai bindings và trong Run ràng buộc các tham số văn hóa thông qua các phương pháp chuyển đổi là NULL. Tôi sẽ nói đây là một lỗi – Bruno

Trả lời

2

Chúng tôi nhận thấy rằng bạn cần đảm bảo rằng Language của điều khiển được đặt chính xác để làm cho nó tôn trọng cài đặt ngôn ngữ một cách chính xác. Trong trường hợp của chúng tôi, nó dành cho các ký hiệu tiền tệ, nhưng tôi cho rằng cùng một vấn đề cũng xảy ra cho các ngày tháng.

Tim Heuer có một số blog post mang tên "StringFormat và CurrentCulture trong Silverlight" về việc này.

Giải pháp là để thêm các dòng sau vào constructor xem:

this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name); 

này không giải thích lý do tại sao nó hoạt động một cách chính xác cho <Run>

Các vấn đề liên quan