3

如何在 WPF C# 中获取 treeviewitem 的级别?在 Windows 窗体中,treeview 类有一个 .Level 成员,但 WPF C# 似乎没有。

4

2 回答 2

3

构建视图模型。

与没有它的情况相比,视图模型为您提供了树视图更大的灵活性。帮自己一个忙,不要走可视化树,如果父节点不可见,它可能会被虚拟化掉,您的级别(或深度)图将是错误的。构建一个视图模型来包装您的数据并知道它处于什么级别。

查看此处发布的答案。

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

树视图模型演示

于 2010-07-05T23:57:40.000 回答
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;
    }

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

于 2013-02-08T10:07:22.573 回答