Используемый вами шаблон фактически не реализует требуемое ограничение. Предположим, вы хотите смоделировать «животное может быть только дружественным с чем-то своего рода»:
abstract class Animal where T : Animal
{
public abstract void GetFriendly(T t);
}
class Cat : Animal
{
public override void GetFriendly(Cat cat) {}
}
Удалось ли нам реализовать желаемое ограничение? Нет.
class EvilDog : Animal
{
public override void GetFriendly(Cat cat) {}
}
Теперь злая собака может быть дружелюбна с любым котом и не дружит с другими злыми собаками.
Ограничение типа, которое вы хотите, невозможно в C # система. Попробуйте Haskell, если вам нужно такое ограничение, которое применяется системой типов.
См. Мою статью по этому вопросу для более подробной информации:
http: //blogs.msdn. ком / б / ericlippert / архив / 2011/02/03 / страньше-и-curiouser.aspx
TreeGrid напрямую выходит из Grid, поэтому вы можете использовать аналогичные методы для стилизации TreeGrid.
Предпочтительный способ, например, изменить цвет фона ячейки для использования генератора стилей
Здесь уже есть вопрос об этом с ответом: Как установить цвет фона ячейки в сетке / таблице в Vaadin?