Вы можете установить FrameworkElement.Language
свойство только на язык , но не на обычай CultureInfo
. CultureInfo.CurrentCulture.IetfLanguageTag
возвращает тег языка, на который не влияет NumberFormat
или DateTimeFormat
свойства CultureInfo.CurrentCulture
.
Что вы можете сделать, примените форматирование по всему миру, чтобы определить пользовательскую привязку, где вы устанавливаете ConverterCulture
свойство в одном месте:
public class CustomBinding : Binding
{
private static readonly CultureInfo cultureInfo;
static CustomBinding()
{
cultureInfo = new CultureInfo("sv");
cultureInfo.NumberFormat.NumberDecimalDigits = 2;
cultureInfo.NumberFormat.NumberDecimalSeparator = ",";
cultureInfo.NumberFormat.NumberGroupSeparator = ".";
cultureInfo.DateTimeFormat.ShortDatePattern = "dd.MM.yyyy";
cultureInfo.DateTimeFormat.FullDateTimePattern = "dd.MM.yyyy";
cultureInfo.DateTimeFormat.ShortTimePattern = "HH:mm";
cultureInfo.DateTimeFormat.LongDatePattern = "dd.MM.yyyy";
cultureInfo.DateTimeFormat.LongTimePattern = "HH:mm";
}
public CustomBinding()
{
ConverterCulture = cultureInfo;
}
public CustomBinding(string path)
: base(path)
{
ConverterCulture = cultureInfo;
}
}
Затем вы можете заменить все свои текущие привязки своим пользовательским расширением разметки, например:
<TextBlock Text="{local:CustomBinding Date}" />