[Converter/Culture] Comment modifier la culture par défaut de mon Converter ?
Salut,
Je viens de remarquer un truc bizarre... j'ai codé le convertisseur suivant pour afficher des dates :
Code:
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 l'utilise de la façon suivante :
Code:
1 2
|
<TextBlock Text="{Binding ReturnDate, Converter={StaticResource convDate}, ConverterParameter=D}" /> |
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".
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"...