2014-03-12 64 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

完美的作品!謝謝 –

相關問題