如何在 WPF C# 中获取树视图项的级别?

发布于 2024-09-08 03:26:51 字数 81 浏览 1 评论 0原文

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

How do you get the level of a treeviewitem in WPF C#? In windows forms there is a .Level member of the treeview class but there does not seem to be one for WPF C#.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤君无依 2024-09-15 03:26:51

构建视图模型。

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

查看此处发布的答案。

回答链接一(您可以向视图模型添加另一个属性 - level)

树视图模型演示

Build a view model.

A View model gves you greater flexibility with the treeview than you can achieve without it. Do yourself a favour, dont walk the visual tree, If a parent node is not visible, it could be virtualised away and your level (or depth) figure will be wrong. build a view model that wraps your data and knows at what level it is at.

Check out the answers posted here.

answer link one (you would add another property to your view model - level)

treeview view model demo

吾性傲以野 2024-09-15 03:26:51

我使用转换器来完成它,因为我想使用

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

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

I did it with a converter because I wanted to do it with <style>

<DataTrigger Binding="{Binding Parent, RelativeSource={RelativeSource Self}, Converter={StaticResource TreeViewItemConverter}}" Value="1">
         <Setter TargetName="Bd" Property="Background"  Value="Yellow"/>
</DataTrigger>

And the converter

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

This is particularly useful for multilevel styling in the treeview

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文