Salut,
Je viens de remarquer un truc bizarre... j'ai codé le convertisseur suivant pour afficher des dates :
Je l'utilise de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 [ValueConversion(typeof(DateTime), typeof(String))] public class DateConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) return ""; string format = "F"; if (parameter != null) format = parameter.ToString(); DateTime date = (DateTime)value; return date.ToString(format, culture.DateTimeFormat); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { string strValue = value.ToString(); DateTime resultDateTime; if (DateTime.TryParse(strValue, culture.DateTimeFormat, DateTimeStyles.None, out resultDateTime)) { return resultDateTime; } return value; } }
Je m'attendais à avoir en sortie "mercredi 18 juin 2008", mais à la place j'obtiens "Wednesday, June 18, 2008". En mettant un point d'arrêt dans le convertisseur, je vois que la culture transmise à Convert est "en-US". Pourtant mon OS est en français, et Thread.Current.CurrentCulture renvoie bien "fr-FR".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <TextBlock Text="{Binding ReturnDate, Converter={StaticResource convDate}, ConverterParameter=D}" />
Quelqu'un aurait une explication et/ou une solution ?
Je pourrais utiliser Thread.Current.CurrentCulture à la place du paramètre reçu, mais j'aimerais bien comprendre d'où sort ce "en-US"...
Partager