ValueConverter がバインディングの一部として使用される場合、Convert
関数のパラメーターの 1 つがSystem.Globalization.CultureInfo
オブジェクトです。
このカルチャ オブジェクトがどこから情報を取得しているか教えてもらえますか?
そのカルチャに基づいて日付をフォーマットするコードがいくつかあります。自分のマシンでホストされている Silverlight コントロールにアクセスすると、日付が正しくフォーマットされます (マシンで短い日付形式として設定されているd/MM/yyyy形式を使用)。(クライアント マシンから) 別のサーバーでホストされている同じコントロールにアクセスすると、日付がMM/dd/yyyy hh:mm:ssとしてフォーマットされます。これは完全に間違っています。偶然にも、サーバーの地域設定がクライアント マシンと同じに設定されています。
これは私の値コンバーターのコードです:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is DateTime)
{
if (parameter != null && !string.IsNullOrEmpty(parameter.ToString()))
return ((DateTime)value).ToString(parameter.ToString());
else
return ((DateTime)value).ToString(culture.DateTimeFormat.ShortDatePattern);
}
return value;
}
基本的に、特定の形式をコンバーター パラメーターとして指定できますが、そうでない場合は、カルチャ オブジェクトの短い日付パターンが使用されます。