如何在WPF C#中获得TreeViewItem的级别?
-
02-10-2019 - |
题
如何在WPF C#中获得TreeViewItem的级别?在Windows表单中,TreeView类有一个.Level成员,但WPF C#似乎没有一个。
解决方案
构建视图模型。
视图模型GVES您使用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中的多级样式特别有用
不隶属于 StackOverflow