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?
XmlLanguage
和 CultureInfo
没有默认的无参数构造函数,这意味着您不能在 XAML.
中实例化它们
但您可以通过编程方式创建资源,然后将它们添加到 Grid.Resources
(只需在 [=21] 中提供 "grid" 的 Grid
和 x:Name
或类似=] 标记以便能够在代码中识别它):
grid.Resources["DefaultLang"] = XmlLanguage.GetLanguage("en-GB");
grid.Resources["DefaultCuture"] = new System.Globalization.CultureInfo("en-GB");
我希望将默认 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?
XmlLanguage
和 CultureInfo
没有默认的无参数构造函数,这意味着您不能在 XAML.
但您可以通过编程方式创建资源,然后将它们添加到 Grid.Resources
(只需在 [=21] 中提供 "grid" 的 Grid
和 x:Name
或类似=] 标记以便能够在代码中识别它):
grid.Resources["DefaultLang"] = XmlLanguage.GetLanguage("en-GB");
grid.Resources["DefaultCuture"] = new System.Globalization.CultureInfo("en-GB");