Как установить ItemContainerStyle только для первого уровня TreeView?
Я хочу измениться ItemContainerStyle
только для предметов первого уровня. И оставьте стиль по умолчанию для более глубоких уровней. Это возможно?
2 ответа
Решение
Да, вы бы создали кастом StyleSelector
который может выбрать другой стиль на основе любых критериев, которые вы решите. В вашем случае вы хотели бы проверить, какие ItemsControl
владел контейнер (как в TreeView
каждый TreeViewItem
является ItemsControl
и владеет своими детьми).
public class TreeViewFirstItemStyleSelector : StyleSelector
{
public override Style SelectStyle(object item, DependencyObject container)
{
var element = container as TreeViewItem;
if (element != null && ItemsControl.GetItemsOwner(element) is TreeView)
return element.FindResource("customStyle") as Style;
return null;
}
}
Затем вы должны установить его в свойстве ItemContainerStyleSelector TreeView.
Вы должны использовать Style
Trigger
s и проверить элементы, если они являются первым элементом. Этот код просто идея:
<Style.Triggers>
<Trigger Property="IsFirst" Value="True">
<Setter Property="Color" Value="Red" />
</Trigger>