你如何在WPF C#中获得treeviewitem的级别?

时间:2010-07-05 21:56:58

标签: c# wpf treeview treeviewitem

如何在WPF C#中获得treeviewitem的级别?在Windows窗体中,树视图类有一个.Level成员,但似乎没有一个用于WPF C#。

2 个答案:

答案 0 :(得分:2)

构建视图模型。

View模型使您在树视图方面的灵活性比没有它时更大。帮自己一个忙,不要走视觉树,如果父节点不可见,它可能被虚拟化,你的水平(或深度)数字将是错误的。构建一个包装数据的视图模型,并知道它处于什么级别。

查看此处发布的答案。

answer link one(您可以在视图模型中添加另一个属性 - 级别)

treeview view model demo

答案 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;
    }

这对树视图中的多级样式特别有用