在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