2012-11-04 27 views
10

d/mm biçiminde girme Null bir DateTime özelliğine bağlı bir TextBox var.Metin kutusuna

Avustralya'dayım, bu nedenle d/mm/yyyy biçiminde sunulmuş tarihler istiyorum. Benim Windows 7 kutusunda

, ben d/aa biçimde tarih girebilir ve doğru dönüştürülmediği

(örn. 11/01 1 Kasım dönüşür, 13/1 13 Ocak vs. dönüşür) Windows 8 kutucuğumda, aynı girdi ABD biçimindeymiş gibi yorumlanır, böylece 1/11 11 Ocak'a ve 13/1 başarısız olur (13. ay olmadığı için).

Her iki bilgisayar Avustralyalı biçimlerini kullanmak üzere ayarlanmış ve ben Application.StartUp olayı bu kodu sahiptir:

en Bağlama StringFormat d ayarlanır
FrameworkElement.LanguageProperty.OverrideMetadata(GetType(FrameworkElement), New FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))) 

/AA/yyyy, ve ben kontrol ettik bunun bir TextBlock'u StringFormat'ı D'ye (aynı tarihte 'Çarşamba, 11 Ocak, 2012' gibi değerler veren uzun tarih formatı] olan aynı özelliğe bağlayarak da doğru olması.

Herhangi bir fikri olan var mı?

Güncelleme: fazla araştırma (aşağıdaki yorumlara bakınız) ortaya bu en-AU kültürü o 1/11 'gibi tarihleri ​​yorumladığı demektir Windows 7 ile kıyaslandığında Windows 8'de farklı olmak bir sorun gibi görünüyor Windows 7'de mm/dd formatında iken, Windows 7'de, bunları en-AU kültürünü kullanırken beklediğim dd/mm biçiminde yorumlar.

+0

Denediğim diğer şeyler: Ana pencerede 'xml: lang =" en-AU "' ayarı, Bağlama üzerinde 'ConverterCulture = en-AU' ayarı. Ne işe yaramadı ... (Bağlayıcı üzerinde bir dönüştürücü yok, ama yine de denediğimi düşündüm) – Charles

+2

'DateTime.Parse (" 1/11 ", CultureInfo.GetCultureInfo (" en-AU ")). Ay 'Windows 7 üzerinde 11 verir, ancak Windows 8 1 - Bu bir WPF bug artık değil ... – Charles

+0

Eğer kullanıcı fr? – Paparazzi

cevap

1

IetfLanguageTag kullanımdan kaldırıldığından, bunun yerine Name özelliğini kullanmayı düşündünüz mü?

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.ietflanguagetag.aspx

:

bir IETF dil etiketin biçiminin adı özelliği tarafından döndürülen kültür adına benzer, ancak benzersiz bir kültürü tanımlamaz. Yani, farklı kültürler aynı dilsel özelliklere sahipse, aynı IETF dil etiketini paylaşır. Mevcut parçacığının Ay ve Gün formatını güncelleyecek

System.Globalization.DateTimeFormatInfo.CurrentInfo.MonthDayPattern = "dd MMMM"; 

kullanma

+0

'IetfLanguageTag' yerine' Name' kullanmak bir fark yaratmaz, ikisi de Windows 7 ve Windows 8’de aynıdır. (Bu sayfadaki gibi) "IETF etiketleri ve isimleri aynıdır . ") – Charles

0

. Windows Server 2012'de MonthDayPattern değişti. Nedenini henüz anlamadım.

İlgili konular