0

myObject の配列から ItemsSource を取得する WPF DataGrid (.NET Framework 4) があります。myObject の列/変数の 1 つは DateTime です。DataGrid 行の描画イベントを変更して、各オブジェクトの DateTime 以外の列のセルに何か他のものを表示できるようにする方法はありますか?

4

1 に答える 1

0

False に設定し、DataGridTemplateColumn などAutoGenerateColumnsを使用して列を手動で定義します。DataGridTextColumn


イベントを使用して編集AutoGeneratingColumnします。次を追加して、列の出力を変更できますIValueConverter

    void MyGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        // check if the current column is the target
        if (e.PropertyName == "MyDateproperty")
        {
            // assuming it's a Text-type column
            var column = (e.Column as DataGridTextColumn);
            if (column != null)
            {
                var binding = column.Binding as Binding;
                if (binding != null)
                {
                    // add a converter to the binding
                    binding.Converter = new StringFormatConverter();
                }
            }
        }
    }

ここで、通常の方法で定義StringFormatConverterし、日付/時刻の値を任意の値に変換します。

public class StringFormatConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var col = (DateTime?)value;
        return (col == null) ? null : col.Value.ToShortDateString();
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
于 2012-09-18T22:28:59.150 に答える