如何在WPF C#中获得TreeViewItem的级别?在Windows表单中,TreeView类有一个.Level成员,但WPF C#似乎没有一个。

有帮助吗?

解决方案

构建视图模型。

视图模型GVES您使用Treeview的灵活性比没有它就能实现的更大。帮自己一个忙,不要走视觉树,如果不可见父节点,它可以虚拟化,您的水平(或深度)数字将是错误的。构建一个包装您的数据并知道其在哪个级别的视图模型。

查看此处发布的答案。

回答链接一个 (您将在视图模型中添加另一个属性 - 级别)

TreeView视图模型演示

其他提示

我用一个转换器做了,因为我想和 <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;
    }

这对于TreeView中的多级样式特别有用

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top