日付を XAML で正しくローカライズするために、コンバーターを作成する必要がありました (Thread.CurrentThread.CurrentUICulture
おそらくThread.CurrentThread.CurrentCulture
、既に正しい値が含まれています!)!:
public sealed class DateTimeToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return null;
if (value is DateTime)
// HERE YOU HAVE TO PASS YOUR CULTURE INFO:
return ((DateTime)value).ToString("d", Thread.CurrentThread.CurrentUICulture);
else
throw new NotImplementedException();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return null;
else
throw new NotImplementedException();
}
}
...そして、次のように XAML で使用します (リソース ディクショナリで宣言することを忘れないでください) (converter:
プレフィックスは、クラスが宣言されている名前空間に関連していますDateTimeToStringConverter
!)。
<Window.Resources>
<ResourceDictionary>
<converters:DateTimeToStringConverter x:Key="DateTimeToStringConverter" />
</ResourceDictionary>
</Window.Resources>
<TextBlock Text="{Binding Path=Date, Mode=OneWay, Converter={StaticResource DateTimeToStringConverter}}" />