我想仅为第一级的项目更改ItemContainerStyle
。并保留更深层次的默认样式。有可能吗?
答案 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>