Aslında yapabilirsiniz ama sadece Çerçevesi ile, varsayılan iplik kültürü ve UI kültürü ayarlamak 4.5+
Bu statik yapıcıya koydum
static MainWindow()
{
CultureInfo culture = CultureInfo
.CreateSpecificCulture(CultureInfo.CurrentCulture.Name);
var dtf = culture.DateTimeFormat;
dtf.ShortTimePattern = (string)Microsoft.Win32.Registry.GetValue(
"HKEY_CURRENT_USER\\Control Panel\\International", "sShortTime", "hh:mm tt");
CultureInfo.DefaultThreadCurrentUICulture = culture;
}
ve diğer uca neyin geldiğini görmek için bir ValueConverter'ın Convert yöntemine bir kesme noktası koyun. CultureInfo.CurrentUICulture en-US olmayı bıraktı ve bunun yerine ShortTimePattern için bölgesel ayarlara saygı duymasını sağlamak için küçük hack'imle en-AU tamamlandı.
Yaşasın, dünyada her şey yolunda! Ya da değil. Convert yöntemine iletilen kültür parametresi hala en-US şeklindedir. Hmm, WTF ?! Ama bu bir başlangıç. En azından bu şekilde
- uygulamanız yüklendiğinde kullanıcı arayüzü kültürünü bir kez düzeltebilirsiniz
- her zaman erişilebilir
CultureInfo.CurrentUICulture
string.Format("{0}", DateTime.Now)
özelleştirilmiş bölgesel ayarlarınızı kullanacak
Çerçevenin 4.5 sürümünü kullanamıyorsanız, CurrentUICulture'u CultureInfo'nun statik bir özelliği olarak ayarlayıp vazgeçip kendi sınıflarınızdan birinin statik özelliği olarak ayarlayın. Bu, string'in varsayılan davranışını düzeltmez.Format veya StringFormat'ın ciltlerde düzgün çalışmasını sağlayın, ardından uygulamanızdaki tüm bağlantıları yeniden oluşturmak ve dönüştürücü kültürünü ayarlamak için uygulamanızın mantıksal ağacında yürüyün.