如何仅为TreeView的第一级设置ItemContainerStyle?

时间:2013-01-09 17:39:24

标签: wpf treeview wpf-controls itemcontainerstyle

我想仅为第一级的项目更改ItemContainerStyle。并保留更深层次的默认样式。有可能吗?

2 个答案:

答案 0 :(得分: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;
    }
}

然后,您可以在TreeView的ItemContainerStyleSelector属性中设置它。

答案 1 :(得分:1)

如果它们是第一个元素,您应该使用Style Trigger和测试项目。 这段代码只是一个想法:

<Style.Triggers>
                <Trigger Property="IsFirst" Value="True">
                    <Setter Property="Color" Value="Red" />
                </Trigger>