我尝试以法语格式显示日期时间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;
在xaml
中<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>
主Grid(布局)有一个datacontext,它由我的对象类型定义。但问题是视图仍然显示英文格式。所以我认为应用程序的文化是用英语重新编写但是没有,我检查了这行代码,价值是&#34; fr-FR&#34;。
string info = CultureInfo.CurrentCulture.Name;
答案 0 :(得分: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"/>