wpf Datagrid单元格格式

时间:2014-11-29 01:10:51

标签: c# wpf datagrid

完全是wpf的新手,我试图获取格式化的datagrid单元格。我发现了以下代码并且正在使用它,但是,它没有做任何事情。

在这个例子中,我想要做的就是格式化其中包含日期的列。有人能指出我正确的方向吗?

我的datagrid源绑定到后面代码中的数据表。

请注意我可能使用了错误的方法来实现我的目标,所以如果您可以建议使用什么方法(如果AutoGeneratingColumn错误的话)......

提前致谢。

private void DataGridBugLog_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    Style styleCenter = new Style(typeof(DataGridCell));
    style.Setters.Add(new Setter(HorizontalAlignmentProperty, HorizontalAlignment.Center));
    style.Setters.Add(new Setter(FontWeightProperty, "Bold"));
    style.Setters.Add(new Setter(ForegroundProperty, "Red"));

    if (e.PropertyType == typeof(System.DateTime))
    {
        (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";
        (e.Column as DataGridTextColumn).CellStyle = styleCenter;
    }
}

1 个答案:

答案 0 :(得分:1)

style.Setters.Add 应为 styleCenter.Setters.Add

“Bold”应为 FontWeights.Bold “Red”应为 Brushes.Red ,你可以在xaml端使用字符串,因为它可以将字符串转换为类型,而从代码隐藏,你需要设置类型。

下面的代码对我有用(如果需要重新用于其他单元格,我会提取样式)

if (e.PropertyType == typeof(System.DateTime))
{
    Style styleCenter = new Style(typeof(DataGridCell));

    styleCenter.Setters.Add(new Setter(HorizontalAlignmentProperty, HorizontalAlignment.Center));
    styleCenter.Setters.Add(new Setter(FontWeightProperty, FontWeights.Bold));
    styleCenter.Setters.Add(new Setter(ForegroundProperty, Brushes.Red));

    (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";
    (e.Column as DataGridTextColumn).CellStyle = styleCenter;
}