2014-03-12 57 views
0

我尝试以法语格式dd/MM/AAAA hh:mm:ss显示日期时间。
我在英文格式喜欢的MM/DD/AAAA HH一个DateTime:MM:SS上午或下午
所以我做这样的分析:DateTime格式有没有正确的文化WP8

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> 

与主网格(布局)有一个DataContext这是定义由我的对象的类型。但问题是视图仍然显示英文格式。所以我认为这是应用程序的文化,这是在英语的剩余,但不,我检查了这行代码,价值是“fr-FR”。

string info = CultureInfo.CurrentCulture.Name; 
+0

转换参数做你想做的“FR-FR”文化完整应用程序还是仅用于日期格式? – Jaihind

+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" /> 

最后你应该指定的结合

<TextBlock Grid.Row="1" Margin="0,2,0,0" Text="{Binding DateModifElement, Converter={StaticResource MyConv}}" Foreground="{StaticResource C01}" FontSize="16"/> 
+0

完美的作品!谢谢 –

相关问题