【发布时间】:2012-12-23 23:15:39
【问题描述】:
我只想为第一级的项目更改ItemContainerStyle。并为更深层次保留默认样式。有可能吗?
【问题讨论】:
标签: wpf treeview wpf-controls itemcontainerstyle
我只想为第一级的项目更改ItemContainerStyle。并为更深层次保留默认样式。有可能吗?
【问题讨论】:
标签: wpf treeview wpf-controls itemcontainerstyle
您应该使用StyleTriggers 并测试项目是否是第一个元素。
这段代码只是一个想法:
<Style.Triggers>
<Trigger Property="IsFirst" Value="True">
<Setter Property="Color" Value="Red" />
</Trigger>
【讨论】:
是的,您将创建一个自定义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 属性上设置它。
【讨论】: