CustomControl, унаследованный от DataGridColumn: проблемы со стилем - PullRequest
1 голос
/ 29 февраля 2012

Я пытаюсь написать пользовательский элемент управления DataGridSeparatorColumn, унаследованный от DataGridColumn, заставляя его иметь ширину 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;
    }
}

Я гуглил все вокруг, чтобы найти образец дляКод TODO, но я не нашел ничего полезного.Кто-нибудь может указать мне правильный путь?

Спасибо.

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

bobsmith находится на правильном пути, но вам нужно настроить свойства Margin (и, возможно, Padding), чтобы цвет покрывал всю ячейку.

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 не может быть идеальным значением для вашего случая, поэтому попробуйте другие значения здесь, пока вы не будете удовлетворены.

0 голосов
/ 29 февраля 2012

Попробуйте это:

Style myStyle = new Style();
Setter myBlackBackgroundSetter = new Setter();
myBlackBackgroundSetter.Property = DataGridCell.BackgroundProperty;
myBlackBackgroundSetter.Value = Brushes.Black;
myStyle.Setters.Add(myBlackBackgroundSetter);
CellStyle = myStyle;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...