在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" />
一nd在绑定中使用转换器:
<TextBlock Language="{Binding Lang, Converter={StaticResource languageConverter}}">
它已经覆盖处于启动。但我想在运行时动态更改所有TextBlock Language属性。例如;从组合框中选择一个IetfLanguageTag值。谢谢回复 – idemirel 2011-04-09 19:19:35
@idemirel,我更新了我的回答 – 2011-04-09 21:20:51
我打算在5分钟内尝试。谢谢 – idemirel 2011-04-10 08:34:58