WPF在资源中定义ConverterCulture /语言

时间:2019-07-04 12:26:50

标签: wpf xaml globalization

我希望将默认区域性/语言定义为资源,以便提供对所选标签的一致显示。但是,似乎无法定义Language(XMLLanguage)和ConverterCulture(CultureInfor)资源,似乎也无法使用string资源:

<TextBlock Text="{Binding Source={x:Static sys:DateTime.Now}, 
           Mode=OneWay, StringFormat={StaticResource DateFormat},
           ConverterCulture={StaticResource DefaultCulture},
           Language={StaticResource DefaultLang}/>
//....
<Grid.Resources>
    <sys:String x:Key="DefaultCutureString">en-GB</sys:String>
    <win:XmlLanguage xmlns:win="clr-namespace:System.Windows.Markup;assembly=PresentationFramework" x:Key="DefaultLang">en-GB</win:XmlLanguage>
    <g:CultureInfo xmlns:g="clr-namespace:System.Globalization;assembly=mscorlib" x:Key="DefaultCuture">
        <x:Arguments>
            <sys:String>en-GB</sys:String>
        </x:Arguments>
    </g:CultureInfo>
</Grid.Resources>

如何使用资源定义和应用文化/语言?

1 个答案:

答案 0 :(得分:0)

XmlLanguageCultureInfo没有默认的无参数构造函数,这意味着您无法在XAML中实例化它们。

但是您可以以编程方式创建资源,然后将其添加到Grid.Resources(只需在XAML标记中提供“网格”的Gridx:Name或类似名称即可识别它在代码中):

grid.Resources["DefaultLang"] = XmlLanguage.GetLanguage("en-GB");
grid.Resources["DefaultCuture"] = new System.Globalization.CultureInfo("en-GB");