1

にDateTimeFormatCultureConverterを実装しようとしていDataGridTextColumnます。

動作し、デバッグできますが、DateTime 形式はまったく変更されません。なので目に見える変化は見られません...

(いつでも使用できますがreturn formated; // DateTime.Parse(formated); 、その場合、フィールドを ASC/DESC でソートすることはできません。)

理由はありますか?

ありがとうございました!

コード

public class DateTimeFormatCultureConverter: IValueConverter
{

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
     {
           DateTime originalValue = (DateTime)value;

           CultureInfo currentUICulture = Thread.CurrentThread.CurrentUICulture;

           if (currentUICulture.EnglishName.Contains("Spanish") || currentUICulture.EnglishName.Contains("Portuguese"))
           {
                string formated = string.Format("{0}/{1}/{2}", originalValue.Day, originalValue.Month, originalValue.Year);
                return DateTime.Parse(formated);
           }
           else
           {
                string formated = string.Format("{0}/{1}/{2}", originalValue.Month, originalValue.Day, originalValue.Year);
                return DateTime.Parse(formated);                  
            }
   }

   public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
   {
       throw new NotImplementedException();
   }
}

データグリッド

<sdk:DataGridTextColumn x:Name="txcInstalled" 
CanUserReorder="True" 
CanUserResize="True" 
CanUserSort="True" 
Width="Auto" 
Binding="{Binding Installed, Converter={StaticResource DateTimeFormatCultureConverter}}"
IsReadOnly="True" />
4

1 に答える 1

2

DateTimeフォーマットされた文字列ではなく、変数を返しています。と を削除しreturn DateTime.Parse(formated);、代わりにreturn formated;. それはあなたのためにトリックをするはずです。

編集値コンバーターを使用せずに、代わりにStringFormatBinding プロパティを使用できます。http://blogs.msdn.com/b/mikehillberg/archive/2008/05/29/trying-out-binding-stringformat.aspxを参照してください。

以下は、あなたが探している文化固有の文字列を提供するはずです。

<sdk:DataGridTextColumn x:Name="txcInstalled" 
CanUserReorder="True" 
CanUserResize="True" 
CanUserSort="True" 
Width="Auto" 
Binding="{Binding Installed, StringFormat={}{0:d}}"
IsReadOnly="True" />
于 2012-08-20T14:48:20.940 に答える