【发布时间】:2016-02-01 11:22:17
【问题描述】:
我有以下 XAML:
<TextBlock Text="{Binding Source={x:Static s:DateTime.Now}, StringFormat=Date: {0:dddd, MMMM dd}}"/>
s:DateTime.Now 和 xmlns:s="clr-namespace:System;assembly=mscorlib" 在运行时和设计模式下都能正常工作(Visual Studio 2015 Enterprise)。
但如果我尝试对 CultureInfo.CurrentCulture 进行相同操作,那么这仅在运行时有效,并在设计模式下给我一个错误 (xmlns:c="clr-namespace:System.Globalization;assembly=mscorlib"):
<TextBlock Text="{Binding Source={x:Static s:DateTime.Now}, ConverterCulture={x:Static c:CultureInfo.CurrentCulture}, StringFormat=Date: {0:dddd, MMMM dd}}"/>
我不是在寻找解决方法。我只是想了解DateTime.Now 和CultureInfo.CurrentCulture 之间的区别以及为什么其中一个有效而另一个无效。
【问题讨论】:
-
它会给你什么错误?您确定是
DateTime.Now和CultureInfo.CurrentCulture之间的区别,而不是Source和ConverterCulture之间的区别吗? (虽然很奇怪,但请尝试将Source指定为CultureInfo.CurrentCulture,看看是否仍然会出错。) -
它重现了我的问题。我也尝试了@JonSkeet 的建议,问题确实是
CurrentCulture。顺便说一下CurrentCulture的文档说:An object that represents the culture used by the current thread.。这不是问题吗?在设计时没有“当前线程”。DefaultThreadCurrentCulture、InstalledUICulture、InvariantCulture和DefaultThreadCurrentUICulture工作正常。只有CurrentCulture和CurrentUICulture起作用了。
标签: c# wpf xaml globalization