我有以下XAML:
<TextBlock Text="{Binding Source={x:Static s:DateTime.Now},StringFormat=Date: {0:dddd,MMMM dd}}"/>
s:DateTime.Now with 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},MMMM dd}}"/>
我不是在寻找一种解决方法.我只是想了解DateTime.Now和CultureInfo.CurrentCulture之间的区别,以及为什么其中一个工作而另一个不工作.
解决方法
我知道你没有要求解决方法,我无法回答你原来的问题.
我仍然想发布我的解决方案,以防其他人,像我一样,偶然发现你的问题寻找解决方法.
如果在CustomBinding类中设置ConverterCulture并在xaml中使用此CustomBinding而不是Binding,它也可以在设计时使用.
public class CultureAwareBinding : System.Windows.Data.Binding { public CultureAwareBinding() { ConverterCulture = CultureInfo.CurrentCulture; } }
你可以在你的xaml中使用它.
<TextBlock Text="{CultureAwareBinding Source={x:Static s:DateTime.Now},MMMM dd}}"/>
作为额外的好处,如果需要,您可以稍后在一个地方更改ConverterCulture.您也可以像这样设置像StringFormat这样的其他属性.