根据我的应用程序中的设置,我需要能够显示在XAML中显示日期的不同格式。例如,它需要采用"yyyy/MM/dd"
格式或"MM/dd/yyyy"
格式。
我可以通过哪些方式实现这一目标?请注意,我需要处理的应用程序中的位置是有限的,所以即使是“现场修复”类型的解决方案也适用于我的情况。
感谢您的建议。
答案 0 :(得分:1)
这取决于你正在做什么的上下文,但如果你绑定到DateTime,那么你可以改变StringFormat属性,如下所示:
<TextBlock Text="{Binding MyDateTimeVariable, StringFormat='yyyy/MM/dd'}" />
<TextBlock Text="{Binding MyDateTimeVariable, StringFormat='MM/dd/yyyy'}" />
Here是一个很好的例子,可以像这样实现一些不同的格式选项。
答案 1 :(得分:1)
您可以使用ValueConverter。只需将YourApplicationSettings.YearFirst替换为从中提取设置的任何位置。
public class DateTime2FlexibleDateString : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var dt = value as DateTime?
if (dt== null)
{
return null;
}
var dateTime = dt.Value;
if (YourApplicationSettings.YearFirst)
{
return dateTime.ToString("yyyy/MM/dd");
}
return dateTime.ToString("MM/dd/yyyy");
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
然后,在需要它的每个xaml文件中,或者在App.xaml(或添加到App.xaml中的资源字典)中,为转换器添加静态资源。
<UserControl.Resources>
<converters:DateTime2FlexibleDateString x:Key="DateTime2FlexibleDateString" />
</UserControl.Resources>
然后当你绑定到日期时,指定转换器。
<TextBlock Text="{Binding MyDateTimeVariable, Converter={StaticResource DateTime2FlexibleDateString}" />