В событие приложения Startup
добавьте эту инструкцию:
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
Это переопределит значение по умолчанию свойства Language
для текущей культуры для всего приложения.
РЕДАКТИРОВАТЬ: хорошо, я неправильно понял ваш вопрос ...
Если вы хотите связать свойство Language
со строкой, содержащей IetfLanguageTag
, вам нужен конвертер:
[ValueConversion(typeof(string), typeof(XmlLanguage))]
public class IetfTagToXmlLanguageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string tag = value as string;
if (tag == null)
return Binding.DoNothing;
return XmlLanguage.GetLanguage(tag);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
XmlLanguage lang = value as XmlLanguage;
if (lang == null)
return Binding.DoNothing;
return lang.IetfLanguageTag;
}
}
Объявите конвертер в ресурсах XAML:
<local:IetfTagToXmlLanguageConverter x:Key="languageConverter" />
И используйте конвертер в привязке:
<TextBlock Language="{Binding Lang, Converter={StaticResource languageConverter}}">