CustomControl继承自DataGridColumn:样式问题

时间:2012-02-29 09:18:24

标签: c# wpf wpf-controls

我正在尝试编写一个继承自DataGridColumn的DataGridSeparatorColumn自定义控件,强制它为2像素宽并且背景为黑色。

public class DataGridSeparatorColumn : DataGridColumn
{
    public DataGridSeparatorColumn()
    {
        CanUserReorder = false;
        CanUserResize = false;
        CanUserSort = false;

        MaxWidth = 2;
        MinWidth = 2;

        IsReadOnly = true;

        Header = "";

        // TODO: Set black background and/or other visual stuff here                

    }

    protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
    {
        //return new FrameworkElement();
        return null;
    }

    protected override FrameworkElement GenerateEditingElement(DataGridCell cell, object dataItem)
    {
        //return new FrameworkElement();
        return null;
    }
}

我用Google搜索到了TODO代码的示例,但我还没有发现任何有用的内容。有人能用正确的方式指出我吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

bobsmith在正确的轨道上,但您需要调整边距(以及可能的填充)属性,以覆盖整个单元格。

Style style = new Style(typeof(DataGridCell));
style.Setters.Add(new Setter(DataGridCell.BackgroundProperty, new SolidColorBrush(Colors.Black)));
style.Setters.Add(new Setter(DataGridCell.MarginProperty, new Thickness(-2.0)));

CellStyle = style;

-2.0可能不适合您的情况,所以在您满意之前,请尝试不同的值。

答案 1 :(得分:0)

试试这个:

Style myStyle = new Style();
Setter myBlackBackgroundSetter = new Setter();
myBlackBackgroundSetter.Property = DataGridCell.BackgroundProperty;
myBlackBackgroundSetter.Value = Brushes.Black;
myStyle.Setters.Add(myBlackBackgroundSetter);
CellStyle = myStyle;