2010-09-02 29 views
14

Trong WPF, tôi đang cố gắng gắn kết một thuộc tính Date với Datagrid, và nếu tôi chỉ có ngày thuộc tính ràng buộc như định dạng DateTime tôi có thể sắp xếp nó trong DataGrid.DateTime Không hiển thị với định dạng văn bản hiện tại trong Datagrid, ListView

Và tại đây tôi phải hiển thị ngày khu vực, nếu người dùng thay đổi cài đặt khu vực và ngôn ngữ, ứng dụng sẽ hiển thị định dạng thời gian resepective.

Ở đây có Issue, Khi ngày là ở định dạng chuỗi, nó giày theo các thiết lập khu vực, nhưng khi tài sản được binded ở định dạng DateTime ngày được dafaulted để Format Mỹ chứ không phải thể hiện với các thiết lập khu vực currect.

Vì vậy, Nếu tôi có định dạng chuỗi các phân loại bằng việc cột doesnt, và nếu nó ở định dạng DateTime, nó không chuyển đổi sang thiết lập khu vực

Trả lời

26

Đó là bởi vì các hệ thống ràng buộc sử dụng văn hóa được định nghĩa bởi FrameworkElement.Language bất động sản, trong đó không tự động khớp với nền văn hóa hiện tại (một IMO hơi ngớ ngẩn, nhưng đó là cách nó ...).

May mắn thay có một cách dễ dàng xung quanh nó, bạn chỉ cần ghi đè lên các siêu dữ liệu cho các Language tài sản trong ứng dụng constructor tĩnh của bạn, as shown here:

public partial class App : Application 
{ 
    static App() 
    { 
     FrameworkElement.LanguageProperty.OverrideMetadata(
      typeof(FrameworkElement), 
      new FrameworkPropertyMetadata(
       XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); 
    } 
} 
+3

Cảm ơn rất nhiều Thomas, Đây là giải pháp chính xác mà tôi mong đợi. Nhưng không phải là lỗi này trong .NET Framework. – crazy9

+0

Điều này sẽ giúp, nhưng nó chỉ giúp chúng ta trở thành một phần của con đường đó. WPF bây giờ con số ra khi tôi đang sử dụng một nền văn hóa khác nhau như en-GB, nhưng nó vẫn không nhận về những thay đổi định dạng khu vực (ví dụ, tôi thay đổi en-US trên máy tính của tôi để sử dụng yyyy-MM-dd, nhưng lưới vẫn sử dụng MM/dd/yyyy). –

+0

Nó hiển thị định dạng đúng trong ứng dụng WPF của tôi ngay bây giờ tức là từ MM/dd/yyyy sang dd/MM/yyyy nhưng nó giảm phần AM/PM thời gian của tôi mà tôi cần. Tôi sẽ tiếp tục nghiên cứu. – Thierry

2

Các Localization mẫu của WPF Application Framework (WAF) cho thấy cách để giải quyết vấn đề của bạn.

+0

ya chắc chắn tôi sẽ xem xét điều đó, Cảm ơn. – crazy9

+0

Điều này thật tuyệt vời. Cảm ơn bạn! –

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