DateTime 格式没有正确的文化 WP8
Posted
技术标签:
【中文标题】DateTime 格式没有正确的文化 WP8【英文标题】:DateTime Format has not the right culture WP8 【发布时间】:2014-03-12 09:32:17 【问题描述】:我尝试以法语格式 dd/MM/AAAA hh:mm:ss 显示日期时间。 我有一个英文格式的 DateTime,例如 MM/dd/AAAA hh:mm:ss AM 或 PM 所以我做了这样的解析:
foreach (var _element in listElement)
IFormatProvider culture = new CultureInfo("fr-Fr");
string date = _element.DateModifElement.ToString();
_element.DateModifElement = DateTime.Parse(date, culture, DateTimeStyles.NoCurrentDateDefault);
listElementCollection.Add(_element);
它工作得很好,所以现在我的对象中的DateTime
属性具有法语格式。所以我只需要在视图中显示日期即可。
所以我的ObservableCollection
绑定到视图中的LongListSelector
,如下所示:
ObsvCollectionBdeskElement =new ObservableCollection<GroupType<BdeskElement>>(listElementCollection);
llsElements.ItemsSource = ObsvCollectionBdeskElement;
在xml中
<phone:LongListSelector
x:Name="llsElements"
ItemsSource="Binding"
IsGroupingEnabled="True"
HideEmptyGroups="False"
JumpListStyle="StaticResource LongListSelectorJumpListStyle"
LayoutMode="List">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<Grid Margin="0,20,0,0" Background="White">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu IsZoomEnabled="True" x:Name="ContextMenu" Background="#FF00485A" >
<toolkit:MenuItem Header="renommer" Click="renommer_Click" Foreground="White" />
<toolkit:MenuItem Header="supprimer" Click="supprimer_Click" Foreground="White" />
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<Grid VerticalAlignment="Center" Grid.Column="1" Margin="10,0,20,0" >
<TextBlock Grid.Row="1" Margin="0,2,0,0" Text="Binding DateModifElement" Foreground="StaticResource C01" FontSize="16"/>
</Grid>
主网格(布局)有一个由我的对象类型定义的数据上下文。但问题是视图仍然显示英文格式。所以我认为这是应用程序的文化,它是用英文保留的,但不是,我检查了这行代码,值是“fr-FR”。
string info = CultureInfo.CurrentCulture.Name;
【问题讨论】:
您是要“fr-Fr”文化来完成申请还是仅适用于日期格式? 文化应用的属性已经定义为法语...所以我不明白... 【参考方案1】:这是一个已知问题,绑定不使用系统当前区域性来格式化值。 您可以创建自己的值转换器来实现它。
public class FrDateValueConverter
: IValueConverter
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
if (value is DateTime)
var date = (DateTime) value;
return date.ToString(new CultureInfo("fr-Fr"));
return value;
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
throw new NotImplementedException();
现在您应该将转换器添加到资源中
<FrDateValueConverter x:Key="MyConv" />
最后你应该指定绑定的Converter参数
<TextBlock Grid.Row="1" Margin="0,2,0,0" Text="Binding DateModifElement, Converter=StaticResource MyConv" Foreground="StaticResource C01" FontSize="16"/>
【讨论】:
以上是关于DateTime 格式没有正确的文化 WP8的主要内容,如果未能解决你的问题,请参考以下文章
.NET 4.5 DateTime 格式/转换错误与上索布文化
C# - 如何在不改变 DateTime 格式的情况下改变文化