WPF 在资源中定义 ConverterCulture/Language

WPF define ConverterCulture/Language in resources

我希望将默认 culture/language 定义为资源,以便提供所选标签的一致显示。似乎,但是既不能定义 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>

如何使用资源定义和应用 Culture/Language?

XmlLanguageCultureInfo 没有默认的无参数构造函数,这意味着您不能在 XAML.

中实例化它们

但您可以通过编程方式创建资源,然后将它们添加到 Grid.Resources(只需在 [=21] 中提供 "grid" 的 Gridx:Name 或类似=] 标记以便能够在代码中识别它):

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