如何在WPF C#中获得treeviewitem的级别?在Windows窗体中,树视图类有一个.Level成员,但似乎没有一个用于WPF C#。
答案 0 :(得分:2)
构建视图模型。
View模型使您在树视图方面的灵活性比没有它时更大。帮自己一个忙,不要走视觉树,如果父节点不可见,它可能被虚拟化,你的水平(或深度)数字将是错误的。构建一个包装数据的视图模型,并知道它处于什么级别。
查看此处发布的答案。
answer link one(您可以在视图模型中添加另一个属性 - 级别)
答案 1 :(得分:1)
我用转换器做了,因为我想用<style>
<DataTrigger Binding="{Binding Parent, RelativeSource={RelativeSource Self}, Converter={StaticResource TreeViewItemConverter}}" Value="1">
<Setter TargetName="Bd" Property="Background" Value="Yellow"/>
</DataTrigger>
转换器
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((value as TreeView) != null)//level 1
return 0;
var item = (value as TreeViewItem);
if (item != null) // level 2 and 3
return (item.Parent as TreeViewItem)!=null ? 2 : 1;
return 0;
}
这对树视图中的多级样式特别有用