4

パブリック プロパティの DisplayFormat を現在の cultureinfo 日時形式に設定しようとしています。このクラスは、Silverlight Datagrid に使用されます。

    [DisplayFormat(DataFormatString=CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.ToString())]
    public DateTime createDate { get; set; }

それは、引数は定数とtypeofパラメーターのみであるとだけ言っています...

何か案は?

更新、Lukazoid ソリューションを試しましたが、Silverlight データグリッドはデータ注釈を無視します。ローカリゼーションのため、datagrid 列がコード ビハインドに追加されます。

列は次のようになります。

        DataGridTextColumn tcCreateDate = new DataGridTextColumn();
        tcCreateDate.Header = SilverlightApplication.Resources.ContentGrid.dgCreateDate;
        tcCreateDate.Binding = new Binding("createDate");
4

2 に答える 2

5

属性値は、定数またはtypeof構文の結果である必要があります。

現在のカルチャに短い日付形式を使用する場合は、次の形式文字列を使用します。

[DisplayFormat(DataFormatString = "{0:d}")]

アップデート

を追加する更新されたコードを確認できます。DataGridTextColumnこれを試して を追加してくださいStringFormat:

DataGridTextColumn tcCreateDate = new DataGridTextColumn();
tcCreateDate.Header = SilverlightApplication.Resources.ContentGrid.dgCreateDate;
tcCreateDate.Binding = new Binding("createDate") { StringFormat = "{0:d}" };

デフォルトでは、Silverlight はすべてのバインディングの現在のカルチャとして en-US を使用します (システム設定に関係なく)。これはStringFormat、日付が US 形式になることを意味します。現在の設定が考慮されるようにするための解決策については、こちらを参照してください。

于 2012-07-19T14:12:04.153 に答える
1

このようにしてみました

public class Foo
{
    [DataType(DataType.DateTime)]
    public DateTime createDate { get; set; }
}

これは、プロジェクトの日付ベースのカルチャと共に表示されます

于 2012-07-19T14:03:18.603 に答える